zoukankan      html  css  js  c++  java
  • 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> 不存在

     

  • 相关阅读:
    dpdk 连接错误
    strace 跟踪文件
    鲲鹏服务器 centos 升级gcc + 安装qemu
    centos 升级gcc
    undefined reference to `shm_open'
    Golang与C互用
    [ TIME ] Timed out waiting for device dev-ttyS0.device. [DEPEND] Dependency failed for Serial Getty on ttyS0.
    大型 Web 应用插件化架构探索
    网易游戏基于 Flink 的流式 ETL 建设
    基于WASM的无侵入式全链路A/B Test实践
  • 原文地址:https://www.cnblogs.com/hanshuai/p/9634972.html
Copyright © 2011-2022 走看看