ubuntu下 將證書導入java的cacerts證書庫


  首先,說下java的cacerts證書庫: JAVA_HOME目錄下的jre的cacerts

  主要的步驟有4個:

  1. 生成證書
  2. 導出證書
  3. 導入證書

  生成證書(此處CN的值為localhost或者你想設置的域名,而 cas.example.org 是我想通過https訪問的域名)

keytool -genkey -alias cas -keyalg RSA -keysize 2048 -keypass changeit -storepass changeit -keystore /etc/cas/thekeystore -dname "CN=cas.example.org,OU=duodian.com,O=duodian,L=Beijing,ST=BeiJing,C=CN"

Warning:
JKS 密鑰庫使用專用格式。建議使用 "keytool -importkeystore -srckeystore /etc/cas/thekeystore -destkeystore /etc/cas/thekeystore -deststoretype pkcs12" 遷移到行業標准格式 PKCS12。

  解釋: 在 /etc/cas 目錄下,生成名為 thekeystore 的密鑰庫, changeit 分別為密鑰口令和密鑰庫口令, 別名為 cas .

han@ubuntu:/etc/cas$ ls
cas.cer  config  logs  services-repo  thekeystore

  我們發現,在 /etc/cas 目錄下已經生成 名為的 thekeystore 的證書.接下來我們導出證書

 

han@ubuntu:/etc/cas$ keytool -exportcert -alias cas -keystore ./thekeystore -file ./cas.cer -storepass changeit
存儲在文件 </etc/cas/cas.cer> 中的證書

Warning:
JKS 密鑰庫使用專用格式。建議使用 "keytool -importkeystore -srckeystore /etc/cas/thekeystore -destkeystore /etc/cas/thekeystore -deststoretype pkcs12" 遷移到行業標准格式 PKCS12。

  解釋: 將 thekeystore 導出為 cas.cer, 路徑就是當前路徑 /etc/cas

  導入證書 cas.cer 到java的證書庫中

han@ubuntu:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/security$ sudo keytool -import -alias cas -keystore ./cacerts -file /etc/cas/cas.cer
[sudo] han 的密碼: 
輸入密鑰庫口令:  
所有者: CN=cas.example.org, OU=duodian.com, O=duodian, L=Beijing, ST=BeiJing, C=CN
發布者: CN=cas.example.org, OU=duodian.com, O=duodian, L=Beijing, ST=BeiJing, C=CN
序列號: 41739b25
有效期為 Mon Sep 17 11:44:09 CST 2018 至 Sun Dec 16 11:44:09 CST 2018
證書指紋:
     MD5:  F1:71:28:50:AF:2F:1C:56:8D:0F:E9:28:42:DD:F8:B7
     SHA1: D0:3D:16:A9:64:E8:FA:9D:23:DD:33:0E:E5:4A:16:59:7D:1A:C9:AC
     SHA256: 32:77:83:7C:10:1D:DA:72:FA:20:DF:D9:68:CF:B9:B6:6C:05:4E:76:FA:CC:A4:CC:AE:D3:B7:F4:3E:6D:F9:7A
簽名算法名稱: SHA256withRSA
主體公共密鑰算法: 2048 位 RSA 密鑰
版本: 3

擴展: 

#1: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: D4 8C E9 3B 1D 4D CF 7D   44 4C 46 0E F7 B3 6D 21  ...;.M..DLF...m!
0010: 0C E3 C8 F2                                        ....
]
]

是否信任此證書? [否]:  是
證書已添加到密鑰庫中

  解釋:將上一步導出的cas.cer導入到java的證書庫(即下圖的 cascerts )中

han@ubuntu:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/security$ ls
blacklisted.certs  cacerts  java.policy  java.security  nss.cfg  policy

  到此為止,將證書導入到java證書庫的流程就算走完了...下邊說下流程之外相關的東西:

  

  注意, cascerts 不是個文件夾:

han@ubuntu:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/security$ cd cacerts
bash: cd: cacerts: 不是目錄

  查看你導入java證書庫的證書(通過別名 alias )

han@ubuntu:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/security$ keytool -list -keystore ./cacerts -alias cas
輸入密鑰庫口令:  
cas, 2018-9-17, trustedCertEntry, 
證書指紋 (SHA1): D0:3D:16:A9:64:E8:FA:9D:23:DD:33:0E:E5:4A:16:59:7D:1A:C9:AC

  刪除你導入java證書庫的證書(通過別名 alias ),我項目中

han@ubuntu:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/security$ sudo keytool -delete -alias cas -keystore ./cacerts
[sudo] han 的密碼:
輸入密鑰庫口令:

  查看是否刪除成功(提示別名 cas 不存在,說明刪除刪除成功)

han@ubuntu:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/security$ keytool -list -keystore cacerts -alias cas
輸入密鑰庫口令:  
keytool 錯誤: java.lang.Exception: 別名 <cas> 不存在

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM