檔案格式說明
*.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 : 源秘鑰庫
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/255644.html
標籤:其他
