【问题标题】:how to display a root digital certificate on browsers?如何在浏览器上显示根数字证书?
【发布时间】:2014-08-25 08:51:48
【问题描述】:

步骤

  1. 生成根证书

    一个。 openssl genrsa -out root-key.key 1024

    b. openssl req -new -out root-req.csr -key root-key.key -keyform PEM

    c。 openssl x509 -req -in root-req.csr -out root-cert.cer -signkey root-key.key -CAcreateserial

    d。 openssl pkcs12 -export -clcerts -in root-cert.cer -inkey root-key.key -out root.p12

  2. 生成服务器证书并使用根证书进行签名

    一个。 openssl genrsa -out server-key.key 1024

    b. openssl req -new -out server-req.csr -key server-key.key

    c。 openssl x509 -req -in server-req.csr -out server-cert.cer -signkey server-key.key -CA root-cert.cer -CAkey root-key.key -CAcreateserial -days 3650

    d。 openssl pkcs12 -export -clcerts -in server-cert.cer -inkey server-key.key -out server.p12

  3. 服务器证书转换为 jks

    一个。 keytool -importkeystore -srckeystore server.p12 -srcstoretype PKCS12 -deststoretype JKS -destkeystore server.jks

  4. 配置tomcat

     <Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"
             maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
             clientAuth="false" sslProtocol="TLS" keystoreFile="server.jks"  
             keystoreType="JKS" keystorePass="123456" keyAlias="server"/>
    
  5. 启动tomcat,打开浏览器浏览。

问题是浏览器显示“unknow authority”(服务器证书由root签发,但浏览器不显示证书链,只显示服务器证书)?

浏览器不知道证书颁发者,但是一些网站可以显示证书颁发者(我没有在我的电脑上安装网站的根证书,我很确定!!)

但另一个网站可以显示根证书 (https://kyfw.12306.cn/otn/)

我在浏览器中的证书

另一个网站(可以显示证书链,我很确定,我没有在我的电脑上安装它的证书)

【问题讨论】:

    标签: tomcat ssl https ssl-certificate digital-certificate


    【解决方案1】:

    我无法评论您的主要问题,因为我没有真实的服务器名称或真实的 URL。不过……

    但另一个网站可以显示根证书 (https://kyfw.12306.cn/otn/)

    kyfw.12306.cn 证书在我的 Firefox 或 Safari 版本下不受信任。 Firefox 提示我输入安全异常。

    另外,这是一个格式错误的证书(见下文)。它看起来像一个终端实体(服务器)证书,但它设置了Certificate Sign 位。我认为它可以在某些情况下用于铸造证书。

    如果我是你,我不会信任服务器证书。

    如果发行者 Sinorail 证书颁发机构 定期签署这些证书,那么您应该期望签署其他格式错误的最终实体证书。在这种情况下,您应该明确信任Sinorail 证书颁发机构

    证书也有其他问题。就像缺少基本约束(可能是恶意设计决定),一个没有意义的密钥用法(Key Agreement 与 Diffie-Hellman 参数一起使用,而不是基于 RSA 的证书),以及一个违反最佳实践的密钥用法(@987654325 @是公钥下的批量加密,不应该执行)。 Non Repudiation 没有意义,所以它是惰性的(我认为是 CompSci 的人想成为律师)。


    $ openssl s_client -connect kyfw.12306.cn:443 | \
              openssl x509 -text -noout
    depth=1 C = CN, O = Sinorail Certification Authority, CN = SRCA
    verify error:num=19:self signed certificate in certificate chain
    verify return:0
    Certificate:
        Data:
            Version: 3 (0x2)
            Serial Number: 4051956438837501785 (0x383b70e9b6441f59)
        Signature Algorithm: sha1WithRSAEncryption
            Issuer: C=CN, O=Sinorail Certification Authority, CN=SRCA
            Validity
                Not Before: May 26 01:44:36 2014 GMT
                Not After : May 25 01:44:36 2019 GMT
            Subject: C=CN, O=Sinorail Certification Authority, OU=\x94\xC1\x8D\xEF[\xA2b7g\x0DR\xA1N-_\xC3, CN=kyfw.12306.cn
            Subject Public Key Info:
                Public Key Algorithm: rsaEncryption
                    Public-Key: (1024 bit)
                    Modulus:
                        00:bc:0b:19:73:f9:5f:f8:2a:45:24:f1:84:f1:57:
                        1c:e2:8b:bc:69:da:06:4f:5a:eb:95:06:2c:10:ea:
                        2c:0b:f7:c8:ad:ef:95:8d:1a:26:02:51:ab:03:5f:
                        2d:ce:f3:06:3e:3e:d6:45:be:01:0a:92:91:ea:43:
                        55:3a:b9:e9:a2:1d:2b:6d:85:44:b5:c5:30:6c:53:
                        f4:ee:5c:5e:80:1d:cf:a8:76:e3:fa:cc:21:8a:71:
                        49:c7:44:09:2c:45:bf:01:19:28:33:04:0f:d7:dc:
                        1f:42:50:a9:d8:6b:d6:00:d8:40:48:61:c7:2b:cc:
                        88:7a:69:10:23:0c:76:ef:61
                    Exponent: 65537 (0x10001)
            X509v3 extensions:
                X509v3 Authority Key Identifier: 
                    keyid:79:5E:B6:77:B7:E2:52:83:43:ED:C7:51:88:4C:63:85:2C:00:43:58
    
                Netscape Cert Type: 
                    SSL Client, SSL Server
                X509v3 Key Usage: 
                    Digital Signature, Non Repudiation, Key Encipherment, Data Encipherment, Key Agreement, Certificate Sign
                X509v3 Subject Key Identifier: 
                    8F:FD:26:EF:88:E1:AB:DF:77:22:D3:C2:95:D3:47:60:B2:7C:F3:83
                X509v3 Extended Key Usage: 
                    TLS Web Client Authentication, TLS Web Server Authentication
        Signature Algorithm: sha1WithRSAEncryption
             45:de:a1:39:2f:51:54:9e:43:30:31:14:8b:ea:7c:2e:63:bc:
             1b:80:a5:cc:e8:9e:7f:99:89:c8:be:e7:42:5c:bb:5e:c9:8e:
             a6:74:cc:48:e7:e0:7b:0d:1e:6e:7a:9f:c8:84:6e:63:9c:7f:
             5d:df:06:29:74:6a:3e:00:43:3f:61:19:b8:e6:bd:04:ae:7d:
             a0:7a:ff:f2:cc:d6:35:5e:fc:e4:95:00:a0:78:0b:d3:54:75:
             8e:4f:36:ce:c7:0f:37:4b:7e:44:23:8c:37:a1:08:00:da:d4:
             31:fe:4c:fd:fc:ef:d3:79:cc:5a:16:0e:07:a3:43:98:85:b0:
             08:74
    

    【讨论】:

    • 你先给我一个联系工具来摸你,我有很多问题要麻烦你。。谢谢。
    • 首先你能给我一个联系工具来接触你吗,我会有很多问题打扰你..谢谢。问题的关键是为什么打开kyfw.12306.cn/otn显示证书链(SRCA颁发的12306证书,我没有安装SRCA证书),我的测试网站无法显示证书链,在主问题的两张图片之间。。。我的英文很差,抱歉
    • 我已经修复了,使用这个命令 openssl pkcs12 -export -chain -in server.crt -inkey server.key -CAfile ca.crt -out server.p12 -name "server" ,使用选项“-CAfile”设置证书链属性,如果需要jks,可以使用“keytool -importkeystore -srckeystore server.p12 -srcstoretype PKCS12 -destkeystore server.jks -deststoretype JKS”进行转换。
    • @Oliver.Liu - 干得好。我打算以“无法复制”来结束这个问题,因为你自己修复了它。
    猜你喜欢
    • 1970-01-01
    • 2017-07-06
    • 1970-01-01
    • 2021-11-21
    • 1970-01-01
    • 2016-06-24
    • 2019-09-27
    • 2014-02-20
    • 1970-01-01
    相关资源
    最近更新 更多