jdk自帶工具生成 ssl證書


前言:最近一直在做等保測評,其中有一項要求就是需要將應用系統使用https加密方式進行通信。

工具:apache-tomcat-7.0.79、jdk1.7、瀏覽器 google 或者 ie

一、https和http的區別

  1. http 是超文本傳輸協議,信息是明文傳輸;https則是具有安全性的ssl加密傳輸協議。

  2. http和https使用的是完全不同的連接方式,http用的是80端口, https用的是443端口。

二、自簽名證書

  自簽名證書就是自己生成的證書,不是官方生成的證書,官方證書需要交費。

  另外keytool生成的安全證書不能使用IP,一律使用域名,由於我這里是測試,所以將由localhost代替。

三、使用JDK自帶工具keyTool生成自簽發證書

  1. 為服務器生成證書

  打開CMD命令,cd到jdk的bin目錄下,或者先到bin目錄下,按住shift右鍵在此處打開命令窗口

  使用keytool命令生成證書

  keytool  

  -genkey 

  -alias tomcat(別名) 

  -keypass 123456(別名密碼) 

  -keyalg RSA(算法) 

  -keysize 1024(密鑰長度) 

  -validity 365(有效期,天單位) 

  -keystore D:/keys/tomcat.keystore(指定生成證書的位置和證書名稱) 

  -storepass 123456(獲取keystore信息的密碼)

  keytool -genkey -alias tomcat -keypass 123456 -keyalg RSA -keysize 1024 -validity 365 - keystore D:/keys/tomcat.keystore -storepass 123456

  注意在生成之前需要在D盤建一個文件夾keys,要不然會找不到這個文件夾

  

  2. 為客戶端生成證書

  為瀏覽器生成證書,以便讓服務器來驗證它。

  keytool -genkey -alias client1 -keypass 123456 -keyalg RSA -keysize 1024 -validity 365 -storetype PKCS12 -keystore D:/keys/client1.p12 -storepass 123456

  

  

  

四、讓服務器信任客戶端證書

  1. 由於不能直接將PKCS12格式的證書庫導入,必須先把客戶端證書導出為一個單獨的CER文件,使用如下命令:

  keytool -export -alias client1 -keystore D:/keys/client1.p12 -storetype PKCS12 -keypass 123456 -file D:/keys/client1.cer

  

  

  2. 將該文件導入到服務器的證書庫,添加為一個信任證書:

  keytool -import -v -file D:/keys/client1.cer -keystore D:/keys/tomcat.keystore -storepass 123456

  

五、讓客戶端信任服務器證書

  1. 由於是雙向SSL認證,客戶端也要驗證服務器證書,因此,必須把服務器證書添加到瀏覽器的“受信任的根證書頒發機構”。由於不能直接將keystore格式的證書庫導入,必須先把服務器證書導出為一個單獨的CER文件,使用如下命令:

   keytool -keystore D:/keys/tomcat.keystore -export -alias tomcat -file D:/keys/server.cer

  2. 雙擊server.cer文件,按照提示安裝證書,將證書填入到“受信任的根證書頒發機構”。

   

  

 

   導入成功后在瀏覽器操作,這里以谷歌瀏覽器為例:

  

 

   高級設置——HTTPS/SSL——管理證書

  

  把中級證書頒發機構里的localhost(該名稱即時你前面生成證書時填寫的名字與姓氏)證書導出來-再把導出來的證書導入  受信任的根頒發機構  就OK了。

   

六、配置tomcat服務器 

  <Connector  port="8443"

  protocol="org.apache.coyote.http11.Http11NioProtocol" SSLEnabled="true"

  maxThreads="150"

  scheme="https"

  secure="true"

  clientAuth="true"

  sslProtocol="TLS"

  keystoreFile="D:/keys/tomcat.keystore"

  keystorePass="123456"

  truststoreFile="D:/keys/tomcat.keystore"

  truststorePass="123456" />

  屬性說明:

  clientAuth:設置是否雙向驗證,默認為false,設置為true代表雙向驗證

  keystoreFile:服務器證書文件路徑

  keystorePass:服務器證書密碼

  truststoreFile:用來驗證客戶端證書的根證書,此例中就是服務器證書

  truststorePass:根證書密碼

 

  【版權聲明】轉載請注明出處:http://www.cnblogs.com/hsjava1/p/8991173.html 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM