簡體   English   中英

使用 openssl 生成自簽名證書時如何設置密鑰規范或 KEYEXCHANGE 屬性

[英]How to set key spec or KEYEXCHANGE property when generating a self-signed certificate using openssl

我在“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.

一種方法是將您的證書轉換為 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 的 output 中獲得以下信息:

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

Output 提取物:

…………

hCryptProv = 000001372C300D00

KeySpec = 1 -- AT_KEYEXCHANGE

……

經過反復試驗,我發現的一件事是,如果您的證書包含一系列證書,則 SQL 服務器無法正常工作,或者至少這是我的問題。 我的 CA 是 Microsoft,我使用主機的 FQDN 為我的服務器頒發了一個新證書,一切都很好。 但是當我將證書從 MMC 導出到 PFX 文件時,默認情況下會導出證書路徑中的所有證書。 SQL 服務器正在導入主機證書上方的頒發證書,並且沒有設置 KEYSPEC = 1 選項。 如果您知道在哪里查找,這很容易解決。 在 MMC 的導出證書向導中,只需清除“在證書路徑中包含所有證書”選項,然后 SQL 服務器導入正確的選項。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM