最近公司項目跟第三方對接,對端要求通過VPN用內網IP對接,還要簽名證書走HTTPS,順便要求做客戶端SSL鑒權認證!!
自簽名證書
可以通過openssl命令生成RSA key,然后用這個key自己簽名一個證書。
自簽名證書和CA簽名證書的主要區別是自簽名證書安裝后,客戶端需要安裝信任證書,否則瀏覽器還是會報https不安全。12306的證書應該就是自簽名的,所以首頁有為保障您順暢購票,請下載安裝根證書
的提示。
Note:生成的自簽名證書在Chrome 58之后會一直報err_cert_common_name_invalid
並被標識為not secure,網上有說配置openssl Subject Alt Name能夠解決,待驗證
https://github.com/webpack/webpack-dev-server/issues/854
證書格式
SSL證書有多種格式:
- Apache、Nginx等,使用OpenSSL提供的密碼庫,生成pem、key、crt等格式的證書文件。
- Tomcat、Weblogic、JBoss等,使用Java提供的密碼庫。通過Java的Keytool工具,生成Java Keystore(jks)格式的證書文件。
常用證書格式信息:
-
*.der
,*.cer
,*.crt
以二進制形式存放證書,只有公鑰,不包含私鑰。 -
*.csr
證書請求,這個是需要發給CA用來簽名正式證書用的。 -
*.pem
一般是文本格式,可以放證書或私鑰,或者兩者都包含。 *.PEM如果只包含私鑰,那一般用 *.KEY代替。 -
*.pfx
,*.p12
是二進制格式,同時含證書和私鑰,一般有密碼保護。
生成自簽名證書
- 生成RAS Key:server.key
Note: 這個命令生成的是證書的Private Key要保存在安全的地方
$ openssl genrsa -out server.key 2048
如果加-des3
參數,會要求輸入密碼,將來Apache加載了證書啟動時候要輸入這個密碼。
$ openssl genrsa -des3 -out server.key 2048
通過如下命令可以查看
openssl rsa -noout -text -in server.key
- 執行以下命令生成自簽名證書:server.crt
openssl req -new -x509 -nodes -sha1 -days 365 -key server.key -out server.crt -extensions usr_cert
-days
是證書的有效期天數,可以是多年,例如,1825標識5年有效期
執行以上命令會要求輸入如下信息,這些信息都會出現在最終生成的證書中,可以在瀏覽器直接查看。
Note: Comman Name
必須跟真實訪問的domain name一致
Country Name (2 letter code) [AU]:CN
State or Province Name (full name) [Some-State]:North
Locality Name (eg, city) []:City
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Test Ltd
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:test.com
Email Address []:support@test.com
- Apache配置
需要將如下配置增加的Apache Virtual Host配置里
SSLCertificateFile "/path/to/this/server.crt"
SSLCertificateKeyFile "/path/to/this/server.key"
配置之后可以執行sudo apachectl configtest
檢查配置是否正確。
通過sudo httpd -S
檢查Apache Virtual host信息。
客戶端SSL鑒權認證
我們通常的https證書一般都是單向認證,即服務端認證。客戶端認證可以提供一種對客戶端鑒權的能力,只有持有證書的客戶端才能訪問Apache下的指定資源。
在Apache Virtual Host配置如下信息:
Note:此處SSLCACertificateFile 可以配置客戶端的根證書
SSLCACertificateFile "/etc/pki/tls/cert/root.crt"
SSLVerifyClient require
SSLVerifyDepth 10
作者:Tsun424
鏈接:https://www.jianshu.com/p/9c861b85c75a
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。