最近又遇到一個(gè)安卓訪問(wèn)有問(wèn)題堡牡,蘋(píng)果和電腦訪問(wèn)正常的現(xiàn)象抒抬;安卓訪問(wèn)https失敗,錯(cuò)誤:fail ssl hand shake error晤柄。
對(duì)于這個(gè)奇葩的錯(cuò)誤擦剑,就之前的經(jīng)驗(yàn),只能反思是否是證書(shū)配置錯(cuò)誤。網(wǎng)上有遇到過(guò)的惠勒,但是都么有給出修改方式赚抡。
后來(lái)找到了兩個(gè)檢測(cè)工具:
https://www.myssl.cn/tools/check-server-cert.html
https://www.ssllabs.com/ssltest/analyze.html
通過(guò)這兩種檢測(cè)工具檢測(cè)后,基本就知道是什么原因了捉撮,要么是協(xié)議配置不支持怕品,要么是證書(shū)缺失妇垢。
我們遇到的情況就是中間證書(shū)缺失巾遭,當(dāng)時(shí)申請(qǐng)的時(shí)候按照舊的方式去申請(qǐng),會(huì)生成兩個(gè).cer文件闯估。
需要將:ovroot.cer中間證書(shū)copy出來(lái)貼到server.cer證書(shū)的后面灼舍,問(wèn)題就解決了。
附帶Nginx的ssl配置手冊(cè):
一涨薪、證書(shū)整理
ovroot.cer文件為服務(wù)商中間證書(shū)骑素,server.cer為服務(wù)證書(shū),需要將兩個(gè)證書(shū)并使用刚夺,否則會(huì)出現(xiàn)安卓無(wú)法訪問(wèn)献丑,會(huì)出現(xiàn)fail ssl hand shake error這個(gè)錯(cuò)誤。
將ovroot.cer的證書(shū)復(fù)制出來(lái)貼到server.cer內(nèi)容后面侠姑,不要有空行创橄;
二、Nginx的配置如下:
? ? server {
? ? ? ? listen 443;
? ? ? ? server_name spdwechat.ctyun.cn;? ? ? #對(duì)應(yīng)的主機(jī)域名
? ? ? ? ssl on;
? ? ? ? ssl_certificate yun_cert/server.cer;//證書(shū)目錄
? ? ? ? ssl_certificate_key yun_cert/server.key;? #私鑰
? ? ? ? ssl_session_timeout 5m;
? ? ? ? ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照這個(gè)協(xié)議配置
? ? ? ? ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
? ? ? ? ssl_prefer_server_ciphers on;
? ? ? ? location / {
? ? ? ? ? ? proxy_pass http://cpsapi;? ? #實(shí)際的程序監(jiān)聽(tīng)地址
? ? ? ? ? ? proxy_set_header Host $host;
? ? ? ? ? ? proxy_set_header X-Real-Ip $remote_addr;
? ? ? ? ? ? proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
? ? ? ? ? ? proxy_set_header X-Forwarded-Proto? $scheme;
? ? ? ? }
? ? ? ? access_log /server/logs/nginx/cps_rest_access.log main;
? ? }
要支持TLSv1.2協(xié)議莽红;