使用 openssl 生成自签名证书时如何设置密钥规范或 KEYEXCHANGE 属性

问题描述 投票:0回答:2

我在“windows 2012R2”上使用 open ssl 来生成自签名证书。 使用下面的命令我已经生成了证书

openssl genrsa -des3 -out ab.key 
openssl req -new -x509 -key ab.key -out ab.crt
openssl pkcs12 -inkey ab.key -in ab.crt -export -out ab.pkcs12
openssl x509 -in ab.crt -out ab.pem

Getting the error while import the certificate - The selected certificate  does not have the KeySpec 
Exchange property. This property is required by SQL Server to import a certificat Import error: 0x2, Windows Native Error: 0x80092004

I have checked the opennssl config file but could not get like where to set this property.
openssl ssl-certificate windows-server-2012-r2
2个回答
3
投票

一种方法是将您的证书转换为 pfx (pkcs12) 格式,它将获得 KeySpec 的默认值,即 KeySpec = 1 -- At_KEYEXCHANGE

使用 openssl 命令“pkcs12”,如下所示:

openssl pkcs12 -inkey mssql-key.pem -in mssql-cert.crt -export -out mssql-cert.pfx

您将在 certutil 的输出中得到以下信息:

certutil -dump -v .\mssql-cert.pfx

输出摘录:

......

hCryptProv = 000001372C300D00

KeySpec = 1 -- AT_KEYEXCHANGE

......


2
投票

经过多次试验和错误后我发现的一件事是,如果您的证书包含证书链,则 SQL Server 无法正常工作,或者至少在我的情况下这是问题。我的 CA 是 Microsoft,我使用主机的 FQDN 为我的服务器颁发了一个新证书,一切都很好。但是,当我将证书从 MMC 导出到 PFX 文件时,默认情况下会导出证书路径中的所有证书。 SQL Server 正在导入主机证书上方的颁发证书,并且该证书没有设置 KEYSPEC = 1 选项。如果您知道去哪里查找,那么解决这个问题很容易。在 MMC 的导出证书向导中,只需清除“包括证书路径中的所有证书”选项,然后 SQL Server 就会导入正确的证书。

© www.soinside.com 2019 - 2024. All rights reserved.