如何信任与不同发行人的自签名证书?

我有一个由我的同事创build的证书和私钥文件。 在Apache /etc/apache/ssl目录中放置了所有的configuration。

我用https://打开网站,得到了“ 证书不可信 ”的错误,并且“ url不匹配 ”,所以我把它添加到受信任的根证书颁发机构

但它没有解决错误,问题依然存在。 当我查看证书详细信息时,可以看到“发给”和“发出”具有不同的值。

试试1:

我使用下面的命令创build了自己的证书和私钥文件,并重新加载了Apacheconfiguration。

 sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt 

此证书具有“由…颁发”和“颁发给”相同的值。 之后,我再次打开该网站与https://并得到“ 证书不可信 ”的错误,这一次没有“ url不匹配 ”的错误。 我将这个证书添加到受信任的根证书颁发机构 ,我能够看到绿色的状态和网站被encryption。

为什么不能使用现有的证书?

第一个证书首先不可信的原因可能是与其关联的URL没有在证书中创build主题名称。 此时,将证书添加到受信任的根存储中什么都不做,因为您没有解决根证书问题,即证书名称不匹配问题。

因此,证书不仅需要位于可信的根存储中(或者有一个链最终parsing为商店中的受信任根,就像商业购买的证书一样),但是它需要以其他方式有效以及。 名称匹配,没有过期,适合提出的目的等

自签名证书在Issued byIssue to字段中应具有相同的值。 检查它我做了以下命令(基于这篇文章 ):

 $ openssl req -new -newkey rsa:2048 -days 365 -nodes -x509 -keyout server.key -out server.crt [..] Country Name (2 letter code) [AU]:** State or Province Name (full name) [Some-State]:. Locality Name (eg, city) []: Organization Name (eg, company) [Internet Widgits Pty Ltd]: Organizational Unit Name (eg, section) []: Common Name (eg server FQDN or YOUR name) []:test.example.com Email Address []: $ openssl x509 -in server.crt -text -noout Certificate: Data: Version: 3 (0x2) Serial Number: 15468555439710779235 (0xd6ab59376c65b763) Signature Algorithm: sha256WithRSAEncryption Issuer: C=**, O=Internet Widgits Pty Ltd, CN=test.example.com Validity Not Before: Feb 16 22:10:50 2016 GMT Not After : Feb 15 22:10:50 2017 GMT Subject: C=**, O=Internet Widgits Pty Ltd, CN=test.example.com Subject Public Key Info: Public Key Algorithm: rsaEncryption Public-Key: (2048 bit) Modulus: 00:e3:cd:74:a4:45:6a:ed:54:51:f0:9e:1b:1f:b2: [..] 28:2d Exponent: 65537 (0x10001) X509v3 extensions: X509v3 Subject Key Identifier: DC:BB:4C:1B:74:8E:76:7D:60:C9:25:3B:78:B6:EA:F5:70:5C:0E:FD X509v3 Authority Key Identifier: keyid:DC:BB:4C:1B:74:8E:76:7D:60:C9:25:3B:78:B6:EA:F5:70:5C:0E:FD X509v3 Basic Constraints: CA:TRUE Signature Algorithm: sha256WithRSAEncryption 76:7b:0c:d9:a8:e1:47:e3:19:6e:05:c9:8a:1a:d4:f5:19:25: [..] 83:2f:7a:21 

看来Issuer人和Subject是一样的。

如果该证书将被添加到受信任的商店(客户端/ Web浏览器)并被分配给具有域名为text.example.com虚拟主机的Web服务器,并且页面将被https://test.example.com/访问,则应该标记作为可信/ URL匹配。

正如@Xander指出的那样,问题可能是CN或SAN字段不包含域名或证书已过期。 如果您发布证书的字段,我们应该可以提供帮助。 您可以使用该命令转储值

 openssl x509 -noout -text -in /path-to-the-colleague-cert/server.crt 

在主题字段中,CN应该是用来访问网站的域的名称。 如果它具有Subject Name Alternative,则CN将被忽略,然后确保某些SAN字段包含域名