Tomcat 如何生成SSL安全證書(拜讀、學習、記錄) and 如何用OpenSSl生成服務端證書 other 簡述cer和crt後綴的證書的區別

用Tomcat來配置SSL證書主要有下面這麼兩大步驟:

1. 生成證書 (首先我們要用KEYTOOL生成證書)
Java 中的 keytool.exe (位於 JDK\Bin 目錄下)可以用來創建數字證書,所有的數字證書是以一條一條(採用別名區別)的形式存入證書庫(.keystore)的中,證書庫中的一條證書包含該條證書的私鑰,公鑰和對應的數字證書的信息

證書庫中的一條證書可以導出數字證書文件,數字證書文件只包括 主體信息 和 對應的公鑰
在命令行下執行:%Java_home%\bin\keytool -genkey -alias tomcat -keyalg RSA。

此處把RSA運算法則作爲主要安全運算法則,這保證了與其它服務器和組件的兼容性。 

echo %JAVA_HOME%
C:\Program Files\Java\jdk1.8.0_91
這個命令會在用戶的home directory產生一個叫做” .keystore ” 的新文件。在執行後,你首先被要求出示keystore密碼。你會被要求出示關於這個認證書的一般性信息,如公司,聯繫人名稱,等等。這些信息會顯示給那些試圖訪問你程序裏安全網頁的用戶,以確保這裏提供的信息與他們期望的相對應。你會被要求出示密鑰(key)密碼,也就是這個證書所特有的密碼(與其它的儲存在同一個keystore文件裏的認證書不同)。你必須在這裏使用與keystore相同的密碼。Tomcat使用的默認密碼是” changeit “(全都是小寫字母),如果你願意,你可以指定你自己的密碼。(回車=密鑰口令)你還需要在server.xml配置文件裏指定自己的密碼,這在以後會有描述。

eg:爲服務器生成證書
“運行”控制檯,進入%JAVA_HOME%/bin目錄,使用如下命令進入目錄:
cd “c:\Program Files\Java\jdk1.6.0_11\bin” 
使用keytool爲Tomcat生成證書,假定目標機器的域名是“localhost”,keystore文件存放在“D:\home\tomcat.keystore”,口令爲“password”,使用如下命令生成:
keytool -genkey -v -alias tomcat -keyalg RSA -keystore D:\home\tomcat.keystore -validity 36500 (參數簡要說明:“D:\home\tomcat.keystore”含義是將證書文件的保存路徑,證書文件名稱是tomcat.keystore ;“-validity 36500”含義是證書有效期,36500表示100年,默認值是90天 “tomcat”爲自定義證書名稱)。


在命令行填寫必要參數:
A、 輸入keystore密碼:此處需要輸入大於6個字符的字符串。
B、 “您的名字與姓氏是什麼?”這是必填項,並且必須是TOMCAT部署主機的域名或者IP[如:gbcom.com 或者 10.1.25.251](就是你將來要在瀏覽器中輸入的訪問地址),否則瀏覽器會彈出警告窗口,提示用戶證書與所在域不匹配。在本地做開發測試時,應填入“localhost”。
C、 你的組織單位名稱是什麼?”、“您的組織名稱是什麼?”、“您所在城市或區域名稱是什麼?”、“您所在的州或者省份名稱是什麼?”、“該單位的兩字母國家代碼是什麼?”可以按照需要填寫也可以不填寫直接回車,在系統詢問“正確嗎?”時,對照輸入信息,如果符合要求則使用鍵盤輸入字母“y”,否則輸入“n”重新填寫上面的信息。


  這裏我密碼設置的爲123456;
D、 輸入<tomcat>的主密碼,這項較爲重要,會在tomcat配置文件中使用,建議輸入與keystore的密碼一致,設置其它密碼也可以,完成上述輸入後,直接回車則在你在第二步中定義的位置找到生成的文件。

這裏我密碼設置的爲changeit;這個是Tomcat默認的密碼;


eg:爲客戶端生成證書
爲瀏覽器生成證書,以便讓服務器來驗證它。爲了能將證書順利導入至IE和Firefox,證書格式應該是PKCS12,因此,使用如下命令生成:
keytool -genkey -v -alias mykey -keyalg RSA -storetype PKCS12 -keystore D:\home\mykey.p12 (mykey爲自定義別名字)。

此處如果不指定有效時間,默認有效時間是90天
對應的證書庫存放在“D:\home\mykey.p12”,客戶端的CN可以是任意值。雙擊mykey.p12文件,即可將證書導入至瀏覽器(客戶端)。

這裏直接點擊下一步,直到下面爲私鑰鍵入密碼,這裏我設置的是123456;

然後繼續下一步直至:

 

 

讓服務器信任客戶端證書
由於是雙向SSL認證,服務器必須要信任客戶端證書,因此,必須把客戶端證書添加爲服務器的信任認證。由於不能直接將PKCS12格式的證書庫導入,必須先把客戶端證書導出爲一個單獨的CER文件,使用如下命令:
keytool -export -alias mykey -keystore D:\home\mykey.p12 -storetype PKCS12 -storepass password -rfc -file D:\home\mykey.cer 
(mykey爲自定義與客戶端定義的mykey要一致,password是你設置的密碼)。通過以上命令,客戶端證書就被我們導出到“D:\home\mykey.cer”文件了。


下一步,是將該文件導入到服務器的證書庫,添加爲一個信任證書使用命令如下:
     keytool -import -v -file D:\home\mykey.cer -keystore D:\home\tomcat.keystore

 

通過list命令查看服務器的證書庫,可以看到兩個證書,一個是服務器證書,一個是受信任的客戶端證書:
keytool -list -keystore D:\home\tomcat.keystore (tomcat爲你設置服務器端的證書名)。

 

讓客戶端信任服務器證書
由於是雙向SSL認證,客戶端也要驗證服務器證書,因此,必須把服務器證書添加到瀏覽的“受信任的根證書頒發機構”。由於不能直接將keystore格式的證書庫導入,必須先把服務器證書導出爲一個單獨的CER文件,使用如下命令:
keytool -keystore D:\home\tomcat.keystore -export -alias mykey-file D:\home\tomcat.cer (tomcat爲你設置服務器端的證書名)。
通過以上命令,服務器證書就被我們導出到“D:\home\tomcat.cer”文件了。雙擊tomcat.cer文件,按照提示安裝證書,將證書填入到“受信任的根證書頒發機構”。

 

點擊安裝證書一直下一步直至導入成功

 

 

配置Tomcat服務器
打開Tomcat根目錄下的/conf/server.xml,找到Connector port="8443"配置段,修改爲如下:
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
SSLEnabled="true" maxThreads="150" scheme="https"
secure="true" clientAuth="true" sslProtocol="TLS"
keystoreFile="D:\\home\\tomcat.keystore" keystorePass="123456"
truststoreFile="D:\\home\\tomcat.keystore" truststorePass="123456" />
(tomcat要與生成的服務端證書名一致)
屬性說明:
clientAuth:設置是否雙向驗證,默認爲false,設置爲true代表雙向驗證
keystoreFile:服務器證書文件路徑
keystorePass:服務器證書密碼
truststoreFile:用來驗證客戶端證書的根證書,此例中就是服務器證書
truststorePass:根證書密碼


這裏我用的是之前生成的SSL協議,所以路徑上有些不同,上述生成的證書存儲在home目錄下,這裏只需要將SLL更換成home即可。

需要注意的是

該目錄下的mykey.p12文件也需要進行安裝;安裝步驟與上面的相同,一直下一步就好。

在自己的項目中進行https訪問,會出現下列證書

點擊確定後

選擇高級選項,點擊繼續訪問

此時會進入你的網站

但在https上會有一個斜線。這是因爲證書是由我們自己編寫的,並沒有得到官方SSL的授權,所以在瀏覽器上進行訪問的瀏覽器內的安全證書並不能確認我們所寫的證書爲安全證書。

點擊鎖圖標會顯示

官方頒佈的SSL證書需要收費。這裏只是演示一下如何構建一個證書完成一個SSL安全協議的HTTPS訪問,這裏HTTPS被劃掉後默認的還是通過https進行的訪問
--------------------- 
版權聲明:本文爲CSDN博主「陳陳陳驕傲」的原創文章,遵循CC 4.0 by-sa版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/weixin_41581158/article/details/80916467

 

openssl生成證書

 

1. 1024bitkey

openssl genrsa -idea -out test.key 1024

2. 生成csr文件

openssl req -new -key test.key -out test.csr

3. 生成crt文件

openssl x509 -req -days 3650 -in test.csr -signkey test.key -out test.crt

4.  查看

openssl x509 -noout -text -in ./test.crt

 

other 2048

openssl req -days 3650 -x509 -sha256 -nodes -newkey rsa:2048 -keyout test.key -out test_apple.crt

 

================私貨====================

產生私鑰
mkdir -p PRDCA/private/
openssl genrsa -des3 -out PRDCA/private/client_key.pem


生成請求文件
mkdir -p PRDCA/CSR
openssl req -new -key ./PRDCA/private/client_key.pem  -out PRDCA/CSR/client_req.csr

頒發證書
mkdir -p ./PRDCA/usercerts
openssl x509 -req -days 365 -in PRDCA/CSR/client_req.csr -signkey PRDCA/private/client_key.pem  -out PRDCA/usercerts/client.crt
openssl pkcs12 -export -inkey PRDCA/private/client_key.pem  -in PRDCA/usercerts/client.crt  -out client.pfx

--------------------------------------------------------------
產生私鑰
openssl genrsa -des3 -out PRDCA/private/server_key.pem 2048

生成請求文件
openssl req -new -key ./PRDCA/private/server_key.pem -out PRDCA/CSR/server_req.csr

頒發證書
openssl x509 -req -days 365 -in PRDCA/CSR/server_req.csr -signkey PRDCA/private/server_key.pem  -out PRDCA/usercerts/server.crt

 

cer和crt的區別

.CRT = 擴展名CRT用於證書。證書可以是DER編碼,也可以是PEM編碼。擴展名CER和CRT幾乎是同義詞。這種情況在各種unix/linux系統中很常見。

CER = CRT證書的微軟型式。可以用微軟的工具把CRT文件轉換爲CER文件(CRT和CER必須是相同編碼的,DER或者PEM)。擴展名爲CER的文件可以被IE識別並作爲命令調用微軟的cryptoAPI(具體點就是rudll32.exe

擴展資料

Windows中的證書擴展名有好幾種,比如.cer和.crt。通常而言,.cer文件是二進制數據,而.crt文件包含的是ASCII數據。

cer文件包含依據DER(Distinguished Encoding Rules)規則編碼的證書數據,這是x.690標準中指定的編碼格式。

X.509是一個最基本的公鑰格式標準,裏面規定了證書需要包含的各種信息。通常我們提到的證書,都是這個格式的,裏面包含了公鑰、發佈者的數字簽名、有效期等內容。要強調的是,它只裏面是不包含私鑰的。相關的格式有:DER、PEM、CER、CRT。

1.關於證書的不同之處:

PKCS 全稱是 Public-Key Cryptography Standards ,是由 RSA 實驗室與其它安全系統開發商爲促進公鑰密碼的發展而制訂的一系列標準,PKCS 目前共發佈過 15 個標準。 常用的有:

PKCS#7 Cryptographic Message Syntax Standard

PKCS#10 Certification Request Standard

PKCS#12 Personal Information Exchange Syntax Standard

X.509是常見通用的證書格式。所有的證書都符合爲Public Key Infrastructure (PKI) 制定的 ITU-T X509 國際標準。

PKCS#7 常用的後綴是: .P7B .P7C .SPC

PKCS#12 常用的後綴有: .P12 .PFX

X.509 DER 編碼(ASCII)的後綴是: .DER .CER .CRT

X.509 PAM 編碼(Base64)的後綴是: .PEM .CER .CRT

.cer/.crt是用於存放證書,它是2進制形式存放的,不含私鑰。

.pem跟crt/cer的區別是它以Ascii來表示。

pfx/p12用於存放個人證書/私鑰,他通常包含保護密碼,2進制方式

p10是證書請求

p7r是CA對證書請求的回覆,只用於導入

p7b以樹狀展示證書鏈(certificate chain),同時也支持單個證書,不含私鑰。

2.修改證書:

公鑰和私鑰一般都是用PEM方式保存,但是公鑰文件還不足以成爲證書,還需要CA的簽名
CSR是證書籤名請求,CA用自己的私鑰文件簽名之後生成CRT文件就是完整的證書了
CER和CRT其實是一樣的,只是一般Linux下面叫CRT多,Windows下面叫CER多。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章