關於密碼學算法與數字證書相關的文章

圖片來源:三張圖讓你全面掌握加密解密技術html

什麼是公鑰和私鑰?java

公鑰和私鑰就是俗稱的不對稱加密方式。公鑰(Public Key)與私鑰(Private Key)是經過一種算法獲得的一個密鑰對(即一個公鑰和一個私鑰),公鑰是密鑰對中公開的部分,私鑰則是非公開的部分。公鑰一般用於加密會話密鑰、驗證數字簽名,或加密能夠用相應的私鑰解密的數據。node

經過這種算法獲得的密鑰對能保證在世界範圍內是惟一的。使用這個密鑰對的時候,若是用其中一個密鑰加密一段數據,則必須用另外一個密鑰才能解密。好比用公鑰加密的數據就必須用私鑰才能解密,若是用私鑰進行加密也必須用公鑰才能解密,不然將沒法成功解密。git

數字證書的原理github

數字證書採用公鑰體制,即利用一對互相匹配的密鑰對進行加密、解密。每一個用戶本身設定一把特定的僅爲本人所知的私有密鑰(私鑰),用它進行解密和簽名;同時設定一把公共密鑰(公鑰)並由本人公開,爲一組用戶所共享,用於加密和驗證簽名。算法

因爲密鑰僅爲本人全部,這樣就產生了別人沒法生成的文件,也就造成了數字簽名。shell

數字證書是一個經證書受權中心(CA)數字簽名的包含公開密鑰擁有者信息以及公開密鑰的文件。最簡單的證書包含一個公開密鑰、名稱以及證書受權中心的數字簽名。數字證書還有一個重要的特徵就是隻在特定的時間段內有效。windows

主流數字證書都有哪些格式?安全

通常來講,主流的Web服務軟件,一般都基於OpenSSL和Java兩種基礎密碼庫。oracle

  • Tomcat、Weblogic、JBoss等Web服務軟件,通常使用Java提供的密碼庫。經過Java Development Kit (JDK)工具包中的Keytool工具,生成Java Keystore(JKS)格式的證書文件。
  • Apache、Nginx等Web服務軟件,通常使用OpenSSL工具提供的密碼庫,生成PEM、KEY、CRT等格式的證書文件。
  • IBM的Web服務產品,如Websphere、IBM Http Server(IHS)等,通常使用IBM產品自帶的iKeyman工具,生成KDB格式的證書文件。
  • 微軟Windows Server中的Internet Information Services(IIS)服務,使用Windows自帶的證書庫生成PFX格式的證書文件。

如何判斷證書文件是文本格式仍是二進制格式?

您可使用如下方法簡單區分帶有後綴擴展名的證書文件:

  • *.DER或*.CER文件: 這樣的證書文件是二進制格式,只含有證書信息,不包含私鑰。
  • *.CRT文件: 這樣的證書文件能夠是二進制格式,也能夠是文本格式,通常均爲文本格式,功能與 *.DER及*.CER證書文件相同。
  • *.PEM文件: 這樣的證書文件通常是文本格式,能夠存放證書或私鑰,或者二者都包含。 *.PEM 文件若是隻包含私鑰,通常用*.KEY文件代替。
  • *.PFX或*.P12文件: 這樣的證書文件是二進制格式,同時包含證書和私鑰,且通常有密碼保護。

密鑰管理工具

MakeCert(已過時,推薦使用 Powershell New-SelfSignedCertificate)
微軟證書建立工具生成僅用於測試目的的 X.509 證書。它建立用於數字簽名的公鑰和私鑰對,並將其存儲在證書文件中。此工具還將密鑰對與指定發行者的名稱相關聯,並建立一個 X.509 證書,該證書將用戶指定的名稱綁定到密鑰對的公共部分。

OpenSSL
OpenSSL 是一個強大且應用普遍的安全基礎庫工具。

OpenSSL 建立RSA私鑰 (2048位)
openssl genrsa -out  private_key.pem 2048
openssl rsa -in private_key.pem -pubout -out public_key.pem

Keytool
Keytool工具是 JDK 中自帶的密鑰管理工具,能夠製做Keystore(jks)格式的證書文件,能夠從下載JDK工具包來獲取Keytool工具。

證書格式轉換

如下證書格式之間是能夠互相轉換的

image

  • 將JKS格式證書轉換成PFX格式

    您可使用JDK中自帶的Keytool工具,將JKS格式證書文件轉換成PFX格式。例如,您能夠執行如下命令將 server.jks證書文件轉換成server.pfx證書文件:

    keytool -importkeystore -srckeystore D:\server.jks -destkeystore D:\server.pfx
            -srcstoretype JKS -deststoretype PKCS12

     

  • 將PFX格式證書轉換爲JKS格式

    您可使用JDK中自帶的Keytool工具,將PFX格式證書文件轉換成JKS格式。例如,您能夠執行如下命令將 server.pfx證書文件轉換成server.jks證書文件:

    keytool -importkeystore -srckeystore D:\server.pfx -destkeystore D:\server.jks
            -srcstoretype PKCS12 -deststoretype JKS

     

  • 將PEM/KEY/CRT格式證書轉換爲PFX格式

    您可使用 OpenSSL工具,將KEY格式密鑰文件和CRT格式公鑰文件轉換成PFX格式證書文件。例如,將您的KEY格式密鑰文件(server.key)和CRT格式公鑰文件(server.crt)拷貝至OpenSSL工具安裝目錄,使用OpenSSL工具執行如下命令將證書轉換成server.pfx證書文件:

    openssl pkcs12 -export -out server.pfx -inkey server.key -in server.crt

     

  • 將PFX轉換爲PEM/KEY/CRT

    您可使用 OpenSSL工具,將PFX格式證書文件轉化爲KEY格式密鑰文件和CRT格式公鑰文件。例如,將您的PFX格式證書文件拷貝至OpenSSL安裝目錄,使用OpenSSL工具執行如下命令將證書轉換成server.pem證書文件KEY格式密鑰文件(server.key)和CRT格式公鑰文件(server.crt):

    openssl pkcs12 -in server.pfx -nodes -out server.pem
    openssl rsa -in server.pem -out server.key
    openssl x509 -in server.pem -out server.crt

REFER:
數字證書原理
http://www.cnblogs.com/JeffreySun/archive/2010/06/24/1627247.html
數字簽名是什麼?
http://www.ruanyifeng.com/blog/2011/08/what_is_a_digital_signature.html
數字證書常見標準
http://www.javashuo.com/article/p-ytojebef-o.html
keytool和openssl生成的證書轉換
http://www.javashuo.com/article/p-bvmusymq-dh.html
數字證書應用綜合揭祕(包括證書生成、加密、解密、簽名、驗籤)
http://www.javashuo.com/article/p-gwfgcrxz-bq.html
淺談常見的七種加密算法及實現
http://www.javashuo.com/article/p-waofxqez-bn.html
證書及證書管理(keytool工具實例)
https://www.cnblogs.com/benwu/articles/4891758.html
https://www.alibabacloud.com/help/zh/faq-detail/42214.htm

https://github.com/google/tink

相關文章
相關標籤/搜索