Openssl Keytool自簽發證書

NO IMAGE

Openssl Keytool自簽發證書

以下以生成一個別名(alias)為jetty,根證書為ca.crt,授權證書為server.crt為例。

Keytool生成自簽發證書

keytool -genkey -alias jetty -keyalg RSA -keystore my_keystore

經過以上操作,在產生的my_keystore中包含了一個自簽發的證書和其金鑰。用my_keystore即可在伺服器端和客戶端之間進行https協議互動。

Keytool和Openssl產生受信任的證書

Openssl生成CA的自簽發證書

openssl req -new -x509 -keyout ca.key -out ca.crt

在生成在生產環境中需要使用的根證書時,所有選項務必認真填寫

生成由CA簽發的證書

準備工作

1.在CA證書坐在目錄中新建目錄demoCA、demoCA/newcerts

mkdir -p demoCA/newcerts

2.在demoCA中建立一個空檔案

touch demoCA/index.txt

3.在demoCA中建立一個文字檔案serial, 並在其中輸入’01’

echo '01' > demoCA/serial

步驟

要生成一個CA簽發的證書之前1之前,需要產生一個交給CA簽發的生成證書籤名請求csr。這個需要用前面生成的keystore來生成,然後交給CA簽名。具體步驟為:

1.生成KeyPair金鑰對

keytool -genkey -alias <cert_alias> -keyalg RSA -keystore 

請注意其中的CN域(common name)要和伺服器域名保持一致

2.生成證書籤名請求

keytool certreq -alias jetty -file server.csr -validity 3650 -keyalg RSA -keystore my_keystore

其中的validity為證書要有效期

3.用CA私鑰進行簽名,或者到權威機構申請CA簽名

openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key -notext -policy policy_anything

以上步驟的引數可以視情況而定,但請注意,第3步中的-policy policy_anything需要加上,否則會因為CA中一些選項的編碼和server.csr中一些編碼不同而無法簽發證書

以上生成的證書就可以用於伺服器的身份驗證,如果是jetty搭建伺服器,需要將生成的證書匯入到keystore。

匯入證書到keystore:
1.匯入信任的CA分證書到keystore

keytool -import -v trustcacerts -alias ca -file ca.crt -keystore my_keystore

2.匯入簽名後的server證書到keystore

keytool -import -v trustcacerts -alias server -file server.crt -keystore my_keystore

如果要在瀏覽器中訪問自己的伺服器,在瀏覽器中將ca.crt新增到“受信任的根證書頒發機構”就不會再收到瀏覽器的安全警告了!^_^


  1. CA可以是一個目前受信任的根證書頒發機構,也可以是我們自己製造的一個根證書頒發機構