此证书具有无效的颁发者密钥链

GPr*_*hap 7 ssl openssl keychain pkcs#12 x509certificate

我有私钥(my_ca.key)和公钥(my_cert.crt),由DigiCert签名.现在我想生成SSL证书(版本3)并通过我的私钥对其进行签名.这是我尝试这样做的方式.但是当我导出到钥匙串(Mac OS X)时.我一直得到这样的错误" 这个证书有一个无效的发行人钥匙串 ".不知道如何解决这个问题.这里my_cert.crt从DigiCert High Assurance CA-3扩展而来自DigiCert High Assurance EV Root CA.还将DigiCert High Assurance CA-3,DigiCert High Assurance EV Root CA添加到钥匙串中.它显示my_cert.crt有效.如何得到这种错误.

######### Initialization

SSL_SUBJ="/C=LK/ST=Colombo/L=Colombo/O=wso2/OU=laptop/CN=mdm.go.com"

########SSL Certificate

echo "\nGenerating SSL Certificate >>>>>> START"

openssl genrsa -out ia.key 4096
openssl req -new -key ia.key -out ia.csr -subj "$SSL_SUBJ"
openssl x509 -req -days 365 -in ia.csr -CA my_cert.pem -CAkey my_ca.pem -set_serial 765644787 -out ia.crt -extensions v3_ca -extfile ./openssl.cnf

echo "\nGenerating SSL Certificate >>>>>> END \n"

openssl pkcs12 -export -out ia.p12 -inkey ia.key -in ia.crt -CAfile my_cert.pem -name sslcert -passout pass:password
Run Code Online (Sandbox Code Playgroud)

注意:在/ etc/hosts中添加自定义条目,将IP地址映射到SSL证书CN,并将测试服务器和客户端放在同一台机器上.

Mah*_*esh 30

  1. 下载 https://developer.apple.com/certificationauthority/AppleWWDRCA.cer 并双击以安装到Keychain.
  2. 在Keychain应用程序中选择"查看" - >"显示过期的证书".
  3. 确认已选中"证书"类别.
  4. 从"登录"选项卡和"系统"选项卡中删除过期的Apple全球开发者关系证书颁发机构证书.

这是Apple的答案.

感谢您引起社区的关注并为您遇到的问题道歉.此问题源于在系统和登录密钥链中都有过期的WWDR中间证书副本.要解决此问题,您应该首先下载并(在文件上双击)安装新WWDR中间证书.接下来,在Keychain Access应用程序中,选择System keychain.确保在"查看"菜单中选择"显示过期的证书",然后删除Apple全球开发者关系证书颁发机构中级证书的过期版本(已于2016年2月14日到期).您的证书现在应该在Keychain Access中显示为有效,并且可供Xcode用于提交到App Store.

您还可以访问https://forums.developer.apple.com/thread/37208

有关更多详细信息,请参阅https://developer.apple.com/support/certificates/expiration/

  • 这是正确答案 - 请仔细阅读以上步骤. (3认同)

小智 13

我有一个解决这个问题的简单方法.

在钥匙串中选择证书,然后右键单击它.在那里,您将看到选项"GetInfo"单击它并选择"信任"选项.选择使用此证书时"始终信任"的选项.这就是全部 - 此证书将被标记为您的帐户信任.

在此输入图像描述


小智 0

通常,证书链中除最后一个之外的所有 X.509 证书都是 CA 证书。链中的第一个证书称为根 CA(在您的情况下为 DigiCert 高保证 EV 根 CA),然后颁发者链中的其他 CA 证书(如果有)是中间 CA,最后一个是最终实体(不是 CA)。我认为您不能颁发非 CA 证书颁发的新 SSL 证书。因此,您可以使用由 DigiCert 签名的 my_cert.crt 作为 SSL 证书,但不能使用 my_ca.key 颁发自己的证书。