總結(jié)一下 OpenSSL和Tomcat https的搭建
潮州網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、APP開(kāi)發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)等網(wǎng)站項(xiàng)目制作,到程序開(kāi)發(fā),運(yùn)營(yíng)維護(hù)。創(chuàng)新互聯(lián)于2013年創(chuàng)立到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專(zhuān)注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)。
第一部分:首先是看看 OpenSSL的搞法:
創(chuàng)建證書(shū)的步驟:
(1)生成私鑰
(2)生成待簽名證書(shū)
(3)生成x509證書(shū), 用CA私鑰進(jìn)行簽名
(4)導(dǎo)成瀏覽器支持的p12格式證書(shū)
一:生成CA證書(shū)
CA
1. 創(chuàng)建私鑰 :
openssl genrsa -ges3 -out ca-key.pem 2048 -sha256
2.創(chuàng)建證書(shū)請(qǐng)求 :
openssl req -new -out ca-req.csr -key ca-key.pem -sha256
3.自簽署證書(shū) :
openssl x509 -req -in ca-req.csr -out ca-cert.pem -signkey ca-key.pem -days 1000 -sha256
(2-3 可以一起:
openssl req -x509 -new -out ca-cert.pem -key ca-key.prm -days 1000 -sha256)
4.將證書(shū)導(dǎo)出成瀏覽器支持的.p12格式 :
openssl pkcs12 -export -clcerts -in ca-cert.pem -inkey ca-key.pem -out ca.p12
三.生成server證書(shū)
1.創(chuàng)建私鑰 :
openssl genrsa -des -out server-key.pem 2048 -sha256
2.創(chuàng)建證書(shū)請(qǐng)求 :
openssl req -new -out server-req.csr -key server-key.pem -sha256
3.自簽署證書(shū) :
openssl x509 -req -in server-req.csr -out server-cert.pem
-signkey server-key.pem -CA ca-cert.pem -CAkey ca-key.pem
-CAcreateserial -days 3650
4.將證書(shū)導(dǎo)出成瀏覽器支持的.p12格式 :
openssl pkcs12 -export -clcerts -in server-cert.pem -inkey server-key.pem -out server.p12
四.生成client證書(shū)
1.創(chuàng)建私鑰 :
openssl genrsa -out client-key.pem 1024 -sha256
2.創(chuàng)建證書(shū)請(qǐng)求 :
openssl req -new -out client-req.csr -key client-key.pem -sha256
3.自簽署證書(shū) :
openssl x509 -req -in client-req.csr -out client-cert.pem
-signkey client-key.pem -CA ca-cert.pem -CAkey ca-key.pem
-CAcreateserial -days 3650 -sha256
4.將證書(shū)導(dǎo)出成瀏覽器支持的.p12格式 :
openssl pkcs12 -export -clcerts -in client-cert.pem -inkey client-key.pem -out client.p12
五.根據(jù)ca證書(shū)生成jks文件 (Java keystore)
keytool -keystore truststore.jks -keypass 222222 -storepass 222222 -alias ca -import -trustcacerts -file ca/ca-cert.pem
第二部分 .配置tomcat ssl
1. conf/server.xml。
tomcat6中多了SSLEnabled="true"屬性。keystorefile, truststorefile設(shè)置為你正確的相關(guān)路徑
xml 代碼
tomcat 5.5的配置:
enableLookups="false" disableUploadTimeout="true"
acceptCount="100" scheme="https" secure="true"
clientAuth="true" sslProtocol="TLS"
keystoreFile="server.p12" keystorePass="1111" keystoreType="PKCS12"
truststoreFile="truststore.jks" truststorePass="2222" truststoreType="JKS" />
tomcat6.0的配置:
clientAuth="true" sslProtocol="TLS"
keystoreFile="server.p12" keystorePass="1111" keystoreType="PKCS12"
truststoreFile="truststore.jks" truststorePass="2222" truststoreType="JKS"/>
七、測(cè)試(linux下)
openssl s_client -connect localhost:8443 -cert
/home/ssl/client-cert.pem -key /home/ssl/client-key.pem
-tls1 -CAfile /home/ssl/ca-cert.pem -state -showcerts
GET /index.jsp HTTP/1.0
八、導(dǎo)入證書(shū)
服務(wù)端導(dǎo)入server.P12 和ca.p12證書(shū)
客戶(hù)端導(dǎo)入將ca.p12,client.p12證書(shū)
IE中(打開(kāi)IE->;Internet選項(xiàng)->內(nèi)容->證書(shū))
ca.p12導(dǎo)入至受信任的根證書(shū)頒發(fā)機(jī)構(gòu),client.p12導(dǎo)入至個(gè)人
Firefox中(工具-選項(xiàng)-高級(jí)-加密-查看證書(shū)-您的證書(shū))
將ca.p12和client.p12均導(dǎo)入這里
注意:ca,server,client的證書(shū)的common name(ca=ca,server=localhost,client=dong)一定不能重復(fù),否則ssl不成功
九、tomcat應(yīng)用程序使用瀏覽器證書(shū)認(rèn)證
在server/webapps/manager/WEB-INF/web.xml中,將BASIC認(rèn)證改為證書(shū)認(rèn)證
在conf/tomcat-users.xml中填入下列內(nèi)容
訪問(wèn)http://localhost:8443即可驗(yàn)證ssl是否成功
訪問(wèn)http://localhost:8443/manager/html可驗(yàn)證應(yīng)用程序利用client證書(shū)驗(yàn)證是否成功
附件:
批量創(chuàng)建證書(shū)的格式:
#!/bin/bash
# using sample
# sh genClient.sh 20160728_Client001 "CHANGSHA SHINING POWER ELECTRONICS CO.,LTD" DS2015-F0105-00104 james.taoA1@murata.com
/usr/bin/expect <
spawn openssl req -new -key shdcweb1client.pem -out client/$1.csr -sha256
expect {
"Country Name" {send "CN\r";exp_continue }
"State or Province Name" {send "ShangHai\r";exp_continue }
"Locality Name" {send "ShangHai\r";exp_continue }
"Organization Name" {send "Murata\r";exp_continue }
"Organizational Unit" {send "MCI\r";exp_continue }
"Common Name" {send "$2\r";exp_continue }
"Email Address" {send "$4\r";exp_continue }
"A challenge password" {send "murata\r";exp_continue }
"An optional company name" {send "MCI\r";exp_continue }
}
spawn openssl ca -policy policy_anything -days 365 -cert shdcweb1ca.crt -keyfile shdcweb1cakey.pem -in client/$1.csr -out client/$1.crt
expect {
"Enter pass phrase" {send "CH61is@2016\r";exp_continue }
"Sign the certificate" {send "y\r";exp_continue }
"1 out of 1 certificate requests certified" {send "y\r";exp_continue }
}
spawn openssl pkcs12 -export -clcerts -in client/$1.crt -inkey shdcweb1client.pem -out client/$1.p12
expect {
"Enter Export Password" {send "$3\r";exp_continue }
"Verifying - Enter Export Password" {send "$3\r" }
}
EOF
~