1. 程式人生 > >證書生成 和Tomcat配置

證書生成 和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>