Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ssl 此证书具有无效的颁发者密钥链_Ssl_Openssl_X509certificate_Keychain_Pkcs#12 - Fatal编程技术网

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

Ssl 此证书具有无效的颁发者密钥链,ssl,openssl,x509certificate,keychain,pkcs#12,Ssl,Openssl,X509certificate,Keychain,Pkcs#12,我有私钥(my_ca.key)和公钥(my_cert.crt),由DigiCert签名。现在我想生成SSL证书(版本3)并用私钥对其进行签名。这是我尝试的方法。但当我导出到keychain(macosx)时。我一直收到这样的错误“此证书具有无效的颁发者密钥链”。不知道怎么解决这个问题。在这里,my_cert.crt是从DigiCert高保证CA-3扩展而来的,它是从DigiCert高保证EV根CA扩展而来的。还将DigiCert高保证CA-3、DigiCert高保证EV根CA添加到钥匙链中。它表

我有私钥(my_ca.key)和公钥(my_cert.crt),由DigiCert签名。现在我想生成SSL证书(版本3)并用私钥对其进行签名。这是我尝试的方法。但当我导出到keychain(macosx)时。我一直收到这样的错误“此证书具有无效的颁发者密钥链”。不知道怎么解决这个问题。在这里,my_cert.crt是从DigiCert高保证CA-3扩展而来的,它是从DigiCert高保证EV根CA扩展而来的。还将DigiCert高保证CA-3、DigiCert高保证EV根CA添加到钥匙链中。它表明我的证书是有效的。你怎么会犯这样的错误呢

######### 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

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

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

  • 下载 然后双击以安装到Keychain
  • 选择“查看”->“显示” 密钥链应用程序中的“过期证书”
  • 确认选择了“证书”类别
  • 删除过期的Apple Worldwide开发者关系证书颁发机构 来自“登录”选项卡和“系统”选项卡的证书
  • 以下是苹果的答案

    感谢您将此提请社区和社区的注意 为你遇到的问题道歉。这个问题源于 在两个数据库中都有过期WWDR中间证书的副本 您的系统和登录密钥链。要解决此问题,您应该 首先下载并安装新的WWDR中间证书(通过 双击文件)。接下来,在钥匙链访问中 应用程序,选择系统钥匙链。确保选择“显示” 查看菜单中的“过期证书”,然后删除过期证书 苹果全球开发者关系证书的版本 机构中级证书(于2016年2月14日到期)。 您的证书现在应该在Keychain Access中显示为有效,并且 可供Xcode提交到应用商店

    您也可以查看


    有关更多详细信息,请参阅

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

    在keychain中选择证书右键单击它。在那里,您将看到选项“GetInfo”,单击它并选择“Trust”选项。选择使用此证书时的选项“始终信任”。仅此而已-此证书将被标记为您帐户的受信任证书


    您的证书(my_cert.crt)是CA证书吗?这意味着当您在某些查看器中打开证书时,“基本约束”部分中有什么内容?Subject Type=End Entity或Subject Type=CA?我正在了解这些东西是如何工作的,在中也有明确提到。不管怎样,谢谢你的回复。起初,它对我不起作用,但那是因为我只删除了一个“开发者关系证书”。我在Keychain Access中所做的是选择左侧类别部分中的“所有项目”,然后搜索“关系”。这产生了多个结果,然后我删除了一个过期的。谢谢你的提示删除它。我实际上已经导入了另一个,但出于某种原因,我的证书仍然显示它有一个无效的颁发者。只有在删除过期的一个后,它现在才起作用。