轉自blog.csdn.net/showhilllee/article/details/8631734
六 處理證書
下面我們打開終端(位置:應用程序à實用工具à終端)。
cd到桌面,我們那三個文件所在的位置
1、把.cer的SSL證書轉換爲.pem文件,執行命令:
openssl x509 -in aps_development.cer -inform der -out PushChatCert.pem
在桌面上會生成一個PushChatCert.pem文件
2、把私鑰Push.p12文件轉化爲.pem文件:
openssl pkcs12 -nocerts -out PushChatKey.pem -in Push.p12
這裏需要我們輸入密碼,這個密碼也就是我們導出p12文件時的密碼,也就是我們上面設置的abcabc。然後,需要我們對生成的pem文件設置一個密語,這裏我們推薦還是用上面這個abcabc,防止混亂(當然你也可以設置成別的更有意義的密語),這裏的密語是要告訴我們服務器的。這樣,桌面上又會生成一個PushChatKey.pem文件
3、對生成的這兩個pem文件再生成一個pem文件,來把證書和私鑰整合到一個文件裏:
cat PushChatCert.pem PushChatKey.pem > ck.pem
生成ck.pem文件
這樣,我們的文件就製作完了。下面進入測試階段
爲了測試證書是否工作,執行下面的命令:
telnet gateway.sandbox.push.apple.com 2195
它將嘗試發送一個規則的,不加密的連接到APNS服務。如果你看到上面的反饋,那說明你的MAC能夠到達APNS。按下Ctrl+C關閉連接。如果得到一個錯誤信息,那麼你需要確保你的防火牆允許2195端口。一般這裏都不會出現什麼問題。
下面我們要使用我們生成的SSL證書和私鑰來設置一個安全的鏈接去鏈接蘋果服務器:
openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert PushChatCert.pem -key PushChatKey.pem
執行完這一句命令後需要我們輸入密語
Enter pass phrase for PushChatKey.pem:
我們輸入abcabc按回車
你會看到一個完整的輸出,讓你明白OpenSSL在後臺做什麼。如果鏈接是成功的,你可以隨便輸入一個字符,按下回車,服務器就會斷開鏈接,如果建立連接時有問題,OpenSSL會給你返回一個錯誤信息。
當你在最後的時候你看到這樣說明你已經成功了:
CONNECTED(00000003)
depth=1 /C=US/O=Entrust, Inc./OU=www.entrust.net/rpa isincorporated by reference/OU=(c) 2009 Entrust, Inc./CN=Entrust CertificationAuthority - L1C
verify error:num=20:unable to get local issuercertificate
verify return:0
---
Certificate chain
0s:/C=US/ST=California/L=Cupertino/O=Apple Inc./OU=iTMSEngineering/CN=gateway.sandbox.push.apple.com
i:/C=US/O=Entrust, Inc./OU=www.entrust.net/rpa is incorporated byreference/OU=(c) 2009 Entrust, Inc./CN=Entrust Certification Authority - L1C
1s:/C=US/O=Entrust, Inc./OU=www.entrust.net/rpa is incorporated byreference/OU=(c) 2009 Entrust, Inc./CN=Entrust Certification Authority - L1C
i:/O=Entrust.net/OU=www.entrust.net/CPS_2048incorp. by ref. (limits liab.)/OU=(c) 1999 Entrust.net Limited/CN=Entrust.netCertification Authority (2048)
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIFGzCCBAOgAwIBAgIETBz90jANBgkqhkiG9w0BAQUFADCBsTELMAkGA1UEBhMC
……省略……
fMGbLqkGn8YogdPqe5T1
-----END CERTIFICATE-----
subject=/C=US/ST=California/L=Cupertino/O=AppleInc./OU=iTMS Engineering/CN=gateway.sandbox.push.apple.com
issuer=/C=US/O=Entrust, Inc./OU=www.entrust.net/rpa isincorporated by reference/OU=(c) 2009 Entrust, Inc./CN=Entrust CertificationAuthority - L1C
---
No client certificate CA names sent
---
SSL handshake has read 2731 bytes and written 2165 bytes
---
New, TLSv1/SSLv3, Cipher is AES256-SHA
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
SSL-Session:
Protocol : TLSv1
Cipher : AES256-SHA
Session-ID:
Session-ID-ctx:
Master-Key:C7A47EED5E1F5……省略……369D4
Key-Arg : None
Start Time:1361862882
Timeout : 300 (sec)
Verify return code: 0 (ok)
---
在這裏提醒一下,也許你會看到像我這樣的提示:verify error:num=20:unable to get local issuercertificate
verify return:0