Thrift使用SSL通訊時,祕鑰生成方式

文件格式說明

*.crt、*.cer  證書文件(Certificate)  *.crt是Linux系統文件  cer是windows文件
*.key 私鑰文件(Private Key)
*.csr  證書籤名請求(Certificate signing request) 
*.pem、*.der 證書編碼方式  pem   base64編碼  der二進制編碼(cer,key,csr 均可用這兩種編碼方式)
*.crl  證書吊銷列表(Certificate Revocation List)
*.jks 是JAVA的keytools證書工具支持的證書私鑰格式,javakeystone 裏面存放着key和信任的CA,key和CA可以有多個
x509  一種通用的證書格式,包含證書持有人的公鑰、加密算法等
pkcs1 ~ pksc12 公鑰加密的一種標準,一般格式爲 *.pN ,*.p12是包含證書和密鑰的封裝格式






生成truststore和和keystore文件

生成證書庫(包含私鑰)有效期365*50=18250天
keytool -genkey -alias thrift -keyalg RSA -keystore keystore -keysize 1024 -validity 18250
導出憑證文件
keytool -export -alias thrift -keystore keystore -file truststore.cer
把認憑證件導入到truststore文件
keytool -import -alias thrift -file truststore.cer -keystore truststore




生成服務端證書以及私鑰

create self-signed server key and certificate
生成自簽名證書和私鑰文件
openssl req -new -x509 -nodes  -days 3000 -out server.crt -keyout server.key
-new    :說明生成證書請求文件
-x509   :說明生成自簽名證書
-nodes  :如果指定-newkey自動生成祕鑰,那麼-nodes選項說明生成的祕鑰不需要加密,即不需要輸入passphase
-config :默認參數在ubuntu上爲 /etc/ssl/openssl.cnf, 可以使用-config指定特殊路徑的配置文件
-out    :-out 指定生成的證書請求或者自簽名證書名稱
-batch  :指定非交互模式,直接讀取config文件配置參數,或者使用默認參數值 
-newkey :-newkey是與-key互斥的,-newkey是指在生成證書請求或者自簽名證書的時候自動生成密鑰,
              然後生成的密鑰名稱由-keyout參數指定。當指定newkey選項時,後面指定rsa:bits說明產生
              rsa密鑰,位數由bits指定。 如果沒有指定選項-key和-newkey,默認自動生成祕鑰
-keyout :新創建的私鑰文件











將證書以base64的編碼方式導入到CA.pem中
openssl x509 -in server.crt -text > CA.pem
-in filename:指定要加密的文件存放路徑

將自簽名證書和私鑰文件寫入server.pem文件中
 cat server.crt server.key > server.pem

將自簽名證書和私鑰文件以pscs12的標準導入到server.p12文件
openssl pkcs12 -export -clcerts -in server.crt -inkey server.key -out server.p12(導出密碼爲thrift)
-export :導出pkcs12 證書
-inkey : 私鑰文件


生成客戶端私鑰和證書

create client key and certificate
以genrsa的方式生成客戶端私鑰(沒有加密)
openssl genrsa -out client.key
genrsa : 生成私鑰的標準


創建一個客戶端證書籤名請求
openssl req -new -key client.key -out client.csr

使用server.key(服務端私鑰)簽署客戶端證書
openssl x509 -req -days 365 -in client.csr -CA CA.pem -CAkey server.key -set_serial 01 -out client.crt

CAkey : 設置CA私鑰以簽署證書。如果未指定此選項,則假定CA私鑰存在於CA證書文件中
-CA filename——指定要用於簽名的CA證書。當此選項存在時,x509的行爲就像“迷你CA”。
該CA使用此選項對輸入文件進行簽名:將其頒發者名稱設置爲CA的主題名稱,並使用CAs私鑰進行數字簽名。
此選項通常與-req選項組合。沒有-req選項,輸入是必須是自簽名的證書。


-set_serial n——指定要使用的序列號。此選項可與-signkey或-CA選項一起使用。
如果與-CA選項結合使用,則不使用序列號文件(由-CAserial或-CAcreateserial選項指定)。
序列號可以是十進制或十六進制(如果前面是0x)。也可以指定負序列號,但不建議使用它們。

以PKSC12的格式導入證書(密碼爲 thrift)
openssl pkcs12 -export -clcerts -in client.crt -inkey client.key -out client.p12

以PEM格式導出證書以供OpenSSL使用 
openssl pkcs12 -in client.p12 -out client.pem -clcerts
-clcerts—— 只輸出客戶端證書(而不是CA證書)

將生成的證書以及公私鑰信息導入到java需要的文件中

Java key And certificate import
將服務器證書導入到trustore文件中
keytool -importcert -storepass thrift -keystore .truststore -alias localhost --file server.crt

-storepass : 存儲庫口令

將服務器私鑰以pkcs12的格式導入到keystore文件
keytool -importkeystore -storepass thrift -keystore .keystore -srcstoretype pkcs12 -srckeystore server.p12
-srcstoretype :源存儲類型
-srckeystore : 源祕鑰庫


 

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