SQL Server的OPenSSL证书

时间:2011-06-14 12:58:16

标签: openssl

我使用OpenSSL为我的Microsoft WebServer 2003,IIS 6.0创建了一个SSL证书。我也可以在客户端和服务器端安装和使用它。现在我想将它用于我的SQL Server Express 2008 R2,但它不会出现在SQL Server配置管理器的证书列表中。我在互联网上尝试了很多这样的提示,但都没有奏效。我还在MS服务器上找到了一系列先决条件,但我不确定如何理解它:

  1. 证书必须位于本地计算机或当前用户证书存储中。

  2. 证书必须有一个好的时间戳,即当前系统时间必须在证书的有效时间窗口内。

  3. 证书必须用于服务器身份验证,即必须为服务器身份验证(1.3.6.1.5.5.7.3.1)启用证书的增强型密钥用法属性。

  4. Certficate的密钥规范必须包含AT_KEYEXCHANGE属性。通常,证书的密钥用法应包括密钥加密。

  5. 证书的主题CN必须与服务器计算机的FQDN匹配,如果服务器在故障转移群集上运行,则必须与虚拟服务器的FQDN匹配。这意味着必须在故障转移群集中的所有节点上配置所需的证书。

  6. 建立第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

2 个答案:

答案 0 :(得分:2)

我知道这已经有几个月的历史了,但我在寻找同样的答案时遇到了它。

我在This Link

找到了修复程序

基本上似乎问题是作为“网络服务”运行的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)提供适当的权限。只需右键单击刚刚导入的证书(在证书管理单元中),然后选择“所有任务”下的“管理私钥”。在那里,您可以添加服务帐户并授予其读取权限。