我使用OpenSSL为我的Microsoft WebServer 2003,IIS 6.0创建了一个SSL证书。我也可以在客户端和服务器端安装和使用它。现在我想将它用于我的SQL Server Express 2008 R2,但它不会出现在SQL Server配置管理器的证书列表中。我在互联网上尝试了很多这样的提示,但都没有奏效。我还在MS服务器上找到了一系列先决条件,但我不确定如何理解它:
证书必须位于本地计算机或当前用户证书存储中。
证书必须有一个好的时间戳,即当前系统时间必须在证书的有效时间窗口内。
证书必须用于服务器身份验证,即必须为服务器身份验证(1.3.6.1.5.5.7.3.1)启用证书的增强型密钥用法属性。
Certficate的密钥规范必须包含AT_KEYEXCHANGE属性。通常,证书的密钥用法应包括密钥加密。
证书的主题CN必须与服务器计算机的FQDN匹配,如果服务器在故障转移群集上运行,则必须与虚拟服务器的FQDN匹配。这意味着必须在故障转移群集中的所有节点上配置所需的证书。
建立第1,2和3项。就我而言,第4项是默认的 读。第5项也是如此:CN与FQDN匹配。
任何人都可以帮助我吗?
我执行以下步骤来创建证书:
set home=c:\openSSL\bin
set randfile=File.rnd
openssl genrsa -des3 -out firma-private.key 2048
openssl req -new -config 2.config -key firma-private.key -x509 -days 3065 -out firma-ca.cer
openssl x509 -req -days 3065 -in certreq.txt -CA firma-ca.cer -CAkey firma-private.key -CAcreateserial -out extern-server.cer
2.config的内容:
[ req ]
default_bits = 2048
distinguished_name = req_DN
string_mask = nombstr
[ req_DN ]
countryName = DE
countryName_default = DE
countryName_min = 2
countryName_max = 2
stateOrProvinceName = N........ W........
stateOrProvinceName_default = N........ W........
localityName = W........
localityName_default = W........
0.organizationName = S.....-C......
0.organizationName_default = S.....-C......
organizationalUnitName = Software
organizationalUnitName_default = Software
commonName = s.....-c.......dyndns.org
commonName_max = 64
commonName_default = s.....-........dyndns.org
emailAddress = Info@S.....-C.......de
emailAddress_max = 40
emailAddress_default = Info@S.....-C.......de
提前致谢,
Andree
答案 0 :(得分:2)
我知道这已经有几个月的历史了,但我在寻找同样的答案时遇到了它。
找到了修复程序基本上似乎问题是作为“网络服务”运行的SQL服务没有使用密钥的权限。我按照步骤向网络服务授予了密钥的权利,并且所有工作都完美无缺。
答案 1 :(得分:1)
不要忘记将私钥包含在证书存储中正在安装的文件中,否则证书将不会显示在列表中。还要检查您是否使用了正确的FQDN作为证书的通用名称,否则它也不会显示。
这就是我的所作所为:
# generate key
openssl genrsa -des3 -out server.key 2048
# remove pass
openssl rsa -in server.key -out server.key
# generate sign request, be sure to include the correct FQDN
# (host name followed by primary dns suffix)
openssl req -new -key server.key -out server.csr
# generate self signed certificate
openssl x509 -req -in server.csr -signkey server.key -out server.crt
# include both the certificate and the private key in a PKCS12 keystore
# (leave the export key empty)
openssl pkcs12 -export -out server.p12 -inkey server.key -in server.crt
然后将server.p12文件添加到本地计算机的证书存储区(带有证书管理单元)。最后,您应该能够在SQL配置管理器中选择证书。
但是,如果服务器对您刚导入的私钥没有读取权限,则无法启动。为此,您还必须为运行SQL Server的帐户(例如NETWORK SERVICE)提供适当的权限。只需右键单击刚刚导入的证书(在证书管理单元中),然后选择“所有任务”下的“管理私钥”。在那里,您可以添加服务帐户并授予其读取权限。