Requested host does not match any Subject Alternative Names (SANs) on TLS certificate [xxx] in us...

創(chuàng)建以下SSLSocketFactory工廠實(shí)現(xiàn)矩桂,在請(qǐng)求客戶端設(shè)置該工廠即可解決該報(bào)錯(cuò)罐呼。

import javax.net.ssl.*;
import java.io.IOException;
import java.io.InputStream;
import java.net.InetAddress;
import java.net.Socket;
import java.security.KeyManagementException;
import java.security.KeyStore;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.security.cert.Certificate;
import java.security.cert.CertificateFactory;
import java.security.cert.X509Certificate;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Iterator;

public class TLSSocketFactory extends SSLSocketFactory {
    private SSLSocketFactory mInternalSSLSocketFactory;

    public TLSSocketFactory() throws SSLException {
        try {
            SSLContext sslContext = SSLContext.getInstance("TLS");
            sslContext.init((KeyManager[])null, (TrustManager[])null, (SecureRandom)null);
            this.mInternalSSLSocketFactory = sslContext.getSocketFactory();
        } catch (NoSuchAlgorithmException var2) {
            throw new SSLException(var2.getMessage());
        } catch (KeyManagementException var3) {
            throw new SSLException(var3.getMessage());
        }
    }

    public TLSSocketFactory(InputStream certificateStream) throws SSLException {
        try {
            KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
            keyStore.load((InputStream)null, (char[])null);
            CertificateFactory cf = CertificateFactory.getInstance("X.509");
            Collection<? extends Certificate> certificates = cf.generateCertificates(certificateStream);
            Iterator var5 = certificates.iterator();

            while(var5.hasNext()) {
                Certificate cert = (Certificate)var5.next();
                if (cert instanceof X509Certificate) {
                    String subject = ((X509Certificate)cert).getSubjectDN().getName();
                    keyStore.setCertificateEntry(subject, cert);
                }
            }

            TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
            tmf.init(keyStore);
            SSLContext sslContext = SSLContext.getInstance("TLS");
            sslContext.init((KeyManager[])null, tmf.getTrustManagers(), (SecureRandom)null);
            this.mInternalSSLSocketFactory = sslContext.getSocketFactory();
        } catch (Exception var18) {
            throw new SSLException(var18.getMessage());
        } finally {
            try {
                certificateStream.close();
            } catch (IOException var16) {
            } catch (NullPointerException var17) {
            }

        }
    }

    public String[] getDefaultCipherSuites() {
        return this.mInternalSSLSocketFactory.getDefaultCipherSuites();
    }

    public String[] getSupportedCipherSuites() {
        return this.mInternalSSLSocketFactory.getSupportedCipherSuites();
    }

    public Socket createSocket(Socket s, String host, int port, boolean autoClose) throws IOException {
        return this.enableTLSOnSocket(this.mInternalSSLSocketFactory.createSocket(s, host, port, autoClose));
    }

    public Socket createSocket(String host, int port) throws IOException {
        return this.enableTLSOnSocket(this.mInternalSSLSocketFactory.createSocket(host, port));
    }

    public Socket createSocket(String host, int port, InetAddress localHost, int localPort) throws IOException {
        return this.enableTLSOnSocket(this.mInternalSSLSocketFactory.createSocket(host, port, localHost, localPort));
    }

    public Socket createSocket(InetAddress host, int port) throws IOException {
        return this.enableTLSOnSocket(this.mInternalSSLSocketFactory.createSocket(host, port));
    }

    public Socket createSocket(InetAddress address, int port, InetAddress localAddress, int localPort) throws IOException {
        return this.enableTLSOnSocket(this.mInternalSSLSocketFactory.createSocket(address, port, localAddress, localPort));
    }

    private Socket enableTLSOnSocket(Socket socket) {
        if (socket instanceof SSLSocket) {
            ArrayList<String> supportedProtocols = new ArrayList(Arrays.asList(((SSLSocket)socket).getSupportedProtocols()));
            supportedProtocols.retainAll(Arrays.asList("TLSv1.2", "TLSv1.1", "TLSv1"));
            ((SSLSocket)socket).setEnabledProtocols((String[])supportedProtocols.toArray(new String[supportedProtocols.size()]));
        }

        return socket;
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末形导,一起剝皮案震驚了整個(gè)濱河市捕透,隨后出現(xiàn)的幾起案子论颅,更是在濱河造成了極大的恐慌朴下,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,402評(píng)論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件角虫,死亡現(xiàn)場(chǎng)離奇詭異沾谓,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)上遥,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)搏屑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)争涌,“玉大人粉楚,你說(shuō)我怎么就攤上這事×恋妫” “怎么了模软?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,483評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)饮潦。 經(jīng)常有香客問(wèn)我燃异,道長(zhǎng),這世上最難降的妖魔是什么继蜡? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,165評(píng)論 1 292
  • 正文 為了忘掉前任回俐,我火速辦了婚禮逛腿,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘仅颇。我一直安慰自己单默,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布忘瓦。 她就那樣靜靜地躺著搁廓,像睡著了一般。 火紅的嫁衣襯著肌膚如雪耕皮。 梳的紋絲不亂的頭發(fā)上境蜕,一...
    開(kāi)封第一講書(shū)人閱讀 51,146評(píng)論 1 297
  • 那天,我揣著相機(jī)與錄音凌停,去河邊找鬼粱年。 笑死,一個(gè)胖子當(dāng)著我的面吹牛苦锨,可吹牛的內(nèi)容都是我干的逼泣。 我是一名探鬼主播,決...
    沈念sama閱讀 40,032評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼舟舒,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼拉庶!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起秃励,我...
    開(kāi)封第一講書(shū)人閱讀 38,896評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤氏仗,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后夺鲜,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體皆尔,經(jīng)...
    沈念sama閱讀 45,311評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評(píng)論 2 332
  • 正文 我和宋清朗相戀三年币励,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了慷蠕。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,696評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡食呻,死狀恐怖流炕,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情仅胞,我是刑警寧澤每辟,帶...
    沈念sama閱讀 35,413評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站干旧,受9級(jí)特大地震影響渠欺,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜椎眯,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評(píng)論 3 325
  • 文/蒙蒙 一挠将、第九天 我趴在偏房一處隱蔽的房頂上張望胳岂。 院中可真熱鬧,春花似錦舔稀、人聲如沸旦万。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)成艘。三九已至,卻和暖如春贺归,著一層夾襖步出監(jiān)牢的瞬間淆两,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,815評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工拂酣, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留秋冰,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,698評(píng)論 2 368
  • 正文 我出身青樓婶熬,卻偏偏與公主長(zhǎng)得像剑勾,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子赵颅,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容