代码之家  ›  专栏  ›  技术社区  ›  Daria Pydorenko

JavaKeKooT从URL /端口(WINDOWS)添加服务器证书的简便方法

  •  1
  • Daria Pydorenko  · 技术社区  · 6 年前

    我想将CA证书导入Java密钥存储区。 我发现 this answer 使用一些unix命令。

    我明白 keytool 在Windows中的工作方式与在Linux中相同,不是吗?

    但是呢? openssl ?

    我在Windows中安装了OpenSSL,然后运行它,它正常工作。但是如何替换下面的代码呢?

    </dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > ${HOST}.cert
    

    或者我能换一个吗 OpenSSL 还有别的吗?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Omikron    6 年前

    可能最简单的方法是使用 keystore explorer 。只需使用“检查SSL”功能,然后单击“导入”:。

    或者,您可以用手动步骤替换 </dev/null sed-ne'/-begin certificate-/,/-end certificate-/p'>$host.cert 如果你执行

    openssl s_client-connect-connect www.google.com:443
    < /代码> 
    
    

    它将输出如下内容:

    depth=2 ou=globalsign root ca-r2,o=globalsign,cn=globalsign
    验证返回:1
    深度=1 C=US,O=Google Trust Services,CN=Google Internet Authority G3
    验证返回:1
    深度=0 C=US,ST=California,L=Mountain View,O=Google LLC,CN=www.google.com
    验证返回:1
    ---
    证书链
    0秒:/c=us/st=california/l=mountain view/o=google l l c/cn=www.google.com
    i:/c=us/o=google信任服务/cn=google internet authority g3
    1 s:/c=us/o=google信任服务/cn=google internet authority g3
    i:/ou=globalsign根ca-r2/o=globalsign/cn=globalsign
    ---
    服务器证书
    -----开始证书-----
    miiegjcca2qgawibagiiz20sut50wgwdqyjkozihvcnaqelbqawvdelmakga1e
    bhmcvvmxhjacbgnvbaotfudvb2dszbucnvzdcbtzxj2awnlczelmcga1eaxmc公司
    …
    htkxjvfaluxscpknqagwzehkj9bgdv4oztkmgtu8hczesidkf0azmammfaxaf6u0r
    0n9sku3ap0usr0+g4pvdcjkjzw2uius8ikkhy3hjkt4zcratjz4fptfhswv8d
    ZMUDWJHGJ30S/EVOKN1 QLPWACJKC9W6JAJQTX6PJPDMS0SK90SS9VCIJ0DDW5
    UD+EC4CT
    -----结束证书-----
    主题=/C=US/ST=California/L=Mountain View/O=Google LLC/CN=www.google.com
    issuer=/c=us/o=google信任服务/cn=google internet authority g3
    ---
    未发送客户端证书CA名称
    < /代码> 
    
    

    标记以>begin certificate-----up to>end certificate-----开头的行,然后将它们复制到文本编辑器中。另存为[host].crt。然后执行keytool命令。

    如果您希望在脚本中自动执行这些步骤,则必须安装cygwinthis answer here.>

    签名,然后单击“导入”:

    enter image description here

    或者您可以替换</dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > ${HOST}.cert手动步骤。如果你执行

    openssl s_client -connect -connect www.google.com:443
    

    它将输出如下内容:

    depth=2 OU = GlobalSign Root CA - R2, O = GlobalSign, CN = GlobalSign
    verify return:1
    depth=1 C = US, O = Google Trust Services, CN = Google Internet Authority G3
    verify return:1
    depth=0 C = US, ST = California, L = Mountain View, O = Google LLC, CN = www.google.com
    verify return:1
    ---
    Certificate chain
     0 s:/C=US/ST=California/L=Mountain View/O=Google LLC/CN=www.google.com
       i:/C=US/O=Google Trust Services/CN=Google Internet Authority G3
     1 s:/C=US/O=Google Trust Services/CN=Google Internet Authority G3
       i:/OU=GlobalSign Root CA - R2/O=GlobalSign/CN=GlobalSign
    ---
    Server certificate
    -----BEGIN CERTIFICATE-----
    MIIEgjCCA2qgAwIBAgIIZ20sUt50wGgwDQYJKoZIhvcNAQELBQAwVDELMAkGA1UE
    BhMCVVMxHjAcBgNVBAoTFUdvb2dsZSBUcnVzdCBTZXJ2aWNlczElMCMGA1UEAxMc
    ...
    htkxJVFaLUXScpkNQagWzehkj9BGdV4oztKMgTU8hcZEsiDKF0aZmaMfAXAF6u0r
    0n9sKu3Ap0uSR0+G4PVDcJkJzw2UiUsu8IkkHy3HjKt4zCCrATjZ4FPgtFHSWv8d
    ZmUdWJhgJ30s/EvOKn1uQ6QlPWaCJKc9W6JaJQTX6PjPDMs0sK90ss9vCIJ0dDw5
    ud+EC4cT
    -----END CERTIFICATE-----
    subject=/C=US/ST=California/L=Mountain View/O=Google LLC/CN=www.google.com
    issuer=/C=US/O=Google Trust Services/CN=Google Internet Authority G3
    ---
    No client certificate CA names sent
    

    标记以开头的行-----BEGIN CERTIFICATE-----高达-----END CERTIFICATE-----并将它们复制到文本编辑器中。另存为[host].crt。然后执行keytool命令。

    如果要在脚本中自动执行这些步骤,则必须安装Cygwin或其中一个建议this answer here.