證書生成 和Tomcat配置
證書生成
一、生成伺服器端證書
1 .jks檔案(tomcat引用檔案)數字證書庫
keytool –genkey
–keyalg RSA
–dname
"cn=伺服器名,
ou=中國未來網路,
o=CDN,
l=南京,
st=江蘇,
c=cn"
-alias 別名
-keypass 密碼
-keystore 證書庫名.jks-storepass 密碼
-validity 3650
說明: 利用金鑰和證書用具keytool工具生成證書,連貫書寫命令不要中間回車空行
引數說明: -keyalg:演算法、-dname:唯一判別名、cn:伺服器名(一定要設定為域名地址,例如IP地址)、ou:組織單位名、o:組織名、l:城市名、st:省/市/自治區名稱、c:國家雙字母程式碼、-alias:別名、–keypass:密碼、-keystore:檔名、-validity:有效時間天為單位。
詳細引數說明:請在命令列中輸入keytool –genkey –help 幫助查詢
重要配置: 密碼、別名(-alias)、cn的值為域名
命令舉例: keytool -genkey -keyalg RSA-dname "cn=192.168.28.211,ou=fnic,o=cdn,l=nanjing,st=jiangsu,c=cn"-alias server -keypass asd123 -keystore server.jks -storepass asd123 -validity3650
(連貫書寫)
2 .cer 檔案(瀏覽器必須安裝的服務端檔案)
keytool -keystore 證書庫.jks-export -alias 別名 -storepass 密碼 -file 證書名.cer
命令舉例:keytool -keystore server.jks -export -alias server-storepass asd123 -file server.cer
(連貫書寫)
二、生成客戶端證書
1 .p12檔案(雙向認證時安裝檔案)
keytool -genkey -keyalg 演算法 -dname"cn=伺服器名,ou=中國未來網路,o= CDN,l=南京,st=江蘇,c=cn" -alias 別名 -storetype 金鑰庫型別 -keypass 密碼 -keystore 證書名.p12 -storepass 密碼 -validity 有效天數
引數說明:同服務端證書引數說明
命令舉例:keytool -genkey -keyalg RSA -dname "cn=192.168.28.211,ou=fnic,o=cdn,l=nanjing,st=jiangsu,c=cn" -alias custom -storetype PKCS12 -keypass asd123-keystore custom.p12 -storepass asd123 -validity 3650
(連貫書寫)
2 .cer檔案(為了匯入金鑰庫過度的檔案)
keytool -export -alias 別名 -file cer證書名.cer-keystore p12證書名.p12-storepass 密碼 –storetype 金鑰型別輸出樣式
命令舉例: keytool -export -alias custom -file custom.cer -keystore custom.p12 -storepass asd123 -storetypePKCS12 -rfc
(連貫書寫)
三、新增客戶端證書到伺服器中
命令說明:keytool-import -v -alias 別名 -file cer檔名.cer -keystore 證書庫檔名.jks-storepass 密碼
命令舉例:keytool -import -v -alias custom -file custom.cer -keystore server.jks -storepass asd123
(連貫書寫)
根據命令舉例完成所有操作總共生成四個檔案
server.jks 證書庫檔案,供tomcat引用
server.cer 瀏覽器安裝該證書到“受信任根證書頒發機構”下
custom.p12 雙向認證安裝證書到“您的證書”下
custom.cer 過度證書
Tomcat配置
tomcat service.xml , %CATALINA_HOME%/CONF/service.xml
解開註釋或者新增程式碼
1. <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
2. maxThreads="150" scheme="https" secure="true"
3. clientAuth="false" sslProtocol="TLS"
4. keystoreFile="D:/server.jks" keystorePass="password"
5. truststoreFile="D:/server.jks" truststorePass="password"
/>
說明:keystoreFile 服務端證書庫檔案路徑、keystorePass 密碼、clientAuth 設定雙向認證還是單向認證,clientAuth="true"表示雙向認證,clientAuth="false"表示單向認證
web.xml檔案<web-app></web-app>中新增強制使用htmls程式碼:
<login-config>
<auth-method>CLIENT-CERT</auth-method>
<realm-name>Client Cert Users-only Area</realm-name>
</login-config>
<security-constraint>
<web-resource-collection >
<web-resource-name >SSL</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>