近日一個項目上客戶方要求使用https來進行傳輸的加密,然後客戶方一個也不懂技術的負責人直接丟過來一個證書的壓縮包,包含了:CA.cer、服務器證書.cer、中級CA.cer、***cn.key 、***.cn.csr、csr.txt、私鑰.txt 等一堆文件,因爲之前https證書只是試驗的時候通過自建CA服務器和在tomcat上通過java生成key進行試驗過,線上使用還是第一次,然後裏面還沒有個說明(其實,事後接觸一次以後發現使用挺簡單,說明可有可無),這裏記錄一下,留待以後再有使用的時候可以返過來參考,因爲項目管理比較嚴格,不適宜截圖,以下內容都爲文字介紹。
關於SSL的介紹接這些證書格式的介紹可以參考博客:https://www.cnblogs.com/guogangj/p/4118605.html
對於證書的生成及使用流程大概描述一下:
通過證書提供機構的CSR生成工具來生成csr證書請求,生成以後會有一個csr文件和一個key文件生成(基本都是圖形化操作,過程不再介紹),需要保存好這倆文件。當然,如果不使用證書提供機構的csr工具來生成的話,也可以使用openssl工具和java的keytool來進行生成。
參考鏈接(之前測試的時候做的,比較粗糙):https://blog.csdn.net/woshiji594167/article/details/79696003 ;
然後將生成的csr證書請求發送給證書提供機構,證書提供機構會根據申請的類型進行相應的審覈,然後審覈通過後會將相應的簽名證書發送給申請者(是需要審覈通過之後,登陸證書提供機構的網站進行下載的);
此時下載的證書包中即包含以上片頭列出來的證書:CA.cer、服務器證書.cer、中級CA.cer 。。。
剩下的步驟就是需要將證書配置到web服務器或者應用中間件,具體如下:
Apache配置:
打開apache安裝目錄下conf目錄中的httpd.conf文件,查找“LoadModule ssl_module”如下:
#LoadModule ssl_module modules/mod_ssl.so
#Include conf/extra/httpd_ssl.conf
刪除行首的配置語句註釋符號“#”
保存退出。
打開apache安裝目錄下conf/extra目錄中的httpd_ssl.conf(或conf目錄中的ssl.conf)文件
在配置文件的 …… 之間添加或編輯如下配置項
SSLProtocol all -SSLv2 -SSLv3
SSLHonorCipherOrder on
SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM
SSLCertificateFile conf/server.crt 將服務器證書配置到該路徑下
SSLCertificateKeyFile conf/**.cn.key 將服務器證書私鑰配置到該路徑下
然後配置一個virtualHost,註釋掉文件中的virtualHost標籤對
保存退出,並重啓Apache
通過https方式訪問您的站點,測試站點證書的安裝配置。
Nginx配置:
server {
listen 443;
server_name localhost;
ssl on;
ssl_certificate server.pem;
ssl_certificate_key server.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
#啓用TLS1.1、TLS1.2要求OpenSSL1.0.1及以上版本,若您的OpenSSL版本低於要求,請使用 ssl_protocols TLSv1;
ssl_ciphers HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM;
ssl_prefer_server_ciphers on;
location / {
root html;
index index.html index.htm;
}
}
保存退出,並重啓Nginx。
Tomcat配置:
tomcat配置涉及到需要將證書格式進行轉換(tomcat不能直接使用cer證書,需要轉換爲jks證書),一般證書提供機構官網也提供此種工具:需要提供服務器證書和私鑰文件,若有私鑰文件還需要提供私鑰密碼,然後還需要設置轉出以後的證書密碼。 當然也可以使用java的keytool工具進行生成轉換。具體可以參考:https://www.chinassl.net/ssltools/keytool-commands.html
使用keytool工具列出**.cn.jks的內容(keytool位於jdk的bin目錄下,若未設置環境變量需要使用命令的絕對路徑):
keytool -list -keystore /asop/soft/**.cn.jks -storepass password
此時可以看到jks裏面已經有了一個證書信息(server.cer的證書內容已經通過證書格式轉換的時候導入進來了),此時還需要將中級CA證書的內容導入進jks證書中:
keytool -import -alias ca1 -keystore /asop/**.cn.jks -trustcacerts -storepass password -file /asop/soft/zhongjica.cer -noprompt
將jks證書移動到tomcat的conf下。
修改tomcat的conf/server.xml文件中的https連接器信息
<Connector protocol="org.apache.coyote.http11.Http11Protocol"
port="443" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
keystoreFile="conf\keystore.jks" keystorePass="password"
clientAuth="false" sslProtocol="TLS"
ciphers="TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA256" />然後重新啓動tomcat,訪問443端口來訪問應用。