https

PKCS全稱是Public-Key Cryptography Standards
是由RSA實驗室與其它安全系統開發商爲促進公鑰密碼的發展而制訂的一系列標準
PKCS目前共發佈過15個標準(不肯定)
符合爲Public Key Infrastructure (PKI) 制定的ITU-T X509國際標準node

SSL(Secure Sockets Layer 安全套接層)
及其繼任者傳輸層安全(Transport Layer Security,TLS)
是爲網絡通訊提供安全及數據完整性的一種安全協議
TLS與SSL在傳輸層對網絡鏈接進行加密web


因爲私鑰和證書能夠以不一樣格式的存儲,不少時候須要轉換和查看
私鑰和證書能夠存在同一庫文件中,也能夠分開存儲
per、dem是編碼格式,它不單單是表明後綴名,而.crt和.cer是後綴名算法


大多數經常使用的編碼格式及說明以下:
DER:二進制編碼,經常使用後綴(.der .cer .crt)
  包含X.509證書爲原始格式,使用DER ASN.1編碼。windows

PEM:ASCII編碼(文本base64編碼),經常使用後綴(.pem .cer .crt)
加密的私鑰(除基本屬性外)
  以「-----BEGIN ENCRYPTED PRIVATE KEY-----」開頭
  以「-----END ENCRYPTED PRIVATE KEY-----」結尾
私鑰(除基本屬性外)
  以「-----BEGIN PRIVATE KEY-----」開頭
  以「-----END PRIVATE KEY-----」結尾
證書(除基本屬性外)
  以「-----BEGIN CERTIFICATE-----」開頭
  以「-----END CERTIFICATE-----」結尾安全

PKCS#7:經常使用後綴(.p7b .p7c)
  用於傳輸簽名或加密數據,定義在RFC 2315中。
  一般以.p7b和.p7c做爲後綴且能夠包含整個證書鏈。
  這種格式被Java的keytool工具支持。服務器

PKCS#12:經常使用後綴(.p12 .pfx)
  能夠存儲完整的證書鏈,包括私鑰、證書及證書密鑰等。
  經常使用於微軟的產品,不過也能夠用於客戶端導入證書。網絡

關於擴展名
  .crt 僅存放證書時使用的後綴名,能夠是pem或der編碼
  .cer 微軟形式的後綴格式,可被ie等識別,和.crt後綴並無什麼區別
  .key 用於PCSK#8的公鑰和私鑰,一樣也以是pem或der編碼工具

pem或der編碼最簡單的識別方法就是用記事本打開證書看下內容是否文本(pem非亂碼)編碼


使用keytool可生成p12格式證書
若是須要base64的X.509證書可在windows下可直接安裝p12證書,安裝後可在ie的中進行導出
internet選項 》 內容 》 證書 》 選中以前導入的證書進行導出cer格式
x.509證書包括兩格格式:二進制(D)或Base64格式(S)的加密

 

############################################################
### 一、Keytool生成P12證書.bat
############################################################
rem keytool -genkey
rem -keystore E:\my_keystore 證書庫路徑,不寫路徑默認爲當前腳本全部目錄,裏面能夠放不少證書(這裏網上不少地方都沒說清楚)
rem -storetype PKCS12 證書類型,爲了能導入至IE和Firefox,證書格式應該是PKCS12(這種類型的庫不支持存儲私鑰),默認是jks
rem -storepass abc123456 證書庫的密碼
rem -alias mycert 證書名稱「mycert」,這裏指在證書庫裏放的其中一個證書
rem -keypass abc123 證書密碼,PKCS12類型的庫不支持私鑰,可不設置,這裏指在證書庫裏「web.p12」的密碼,即私鑰
rem -keyalg RSA 證書算法
rem -keysize 1024 證書長度
rem -validity 36500 證書有效期,單位天,36500表示100年,默認值是90天
rem -dname "CN=(名字與姓氏,實際填寫的是IP或域名), OU=(組織單位名稱), O=(組織名稱), L=(城市或區域名稱), ST=(州或省份名稱), C=(單位的兩字母國家代碼)"
keytool -genkey -storetype PKCS12 -keystore my_keystore -storepass abc123456 -alias mycert -keypass abc123 -keyalg RSA -keysize 1024 -validity 36500 -dname "CN=127.0.0.1, OU=TEAM, O=WEB, L=GZ, ST=GD, C=CN"
pause

 

############################################################
### 二、P12證書轉x.509二進制.bat
############################################################
keytool -keystore my_keystore -storepass abc123456 -export -alias mycert -file mycert.der
pause

 

############################################################
### 三、查看證書.bat
############################################################
rem 缺省狀況下,-list 命令打印證書的 MD5 指紋。
rem 而若是指定了 -v 選項,將以可讀格式打印證書。
rem 若是指定了 -rfc 選項,將以可打印的編碼格式輸出證書。
keytool -list -v -keystore my_keystore -storepass abc123456
pause
keytool -list -rfc -keystore my_keystore -storepass abc123456
pause

 

############################################################
### openssl轉換
############################################################
一、使用openssl把PKCS12文件(my_keystore)轉換成咱們須要的pem文件(mycert.pem),該pem帶私鑰信息

  openssl pkcs12 -in my_keystore -out mycert.pem -passin pass:abc123456 -passout pass:abc123456

二、分離各類格式文件

一般jks文件包含了服務器的私鑰、客戶端證書、CA證書
-nocerts(私鑰:server.key)
-nokeys -clcerts(客戶端/服務器證書:server.crt)
-nokeys -cacerts(CA證書:ca.crt)
  openssl pkcs12 -in my_keystore -nodes -nocerts -out server.key
  openssl pkcs12 -in my_keystore -nodes -nokeys -clcerts -out server.crt
  openssl pkcs12 -in my_keystore -nodes -nokeys -cacerts -out ca.crt

三、格式轉換,該轉換不帶私鑰信息

PEM轉爲DER:  openssl x509 -in mycert.pem -inform pem -outform der -out mycert.derDER轉爲PEM:  openssl x509 -in mycert.der -inform der -outform pem -out mycert.pem

相關文章
相關標籤/搜索