用于SQL Server的OPenSSL证书

如何解决用于SQL Server的OPenSSL证书

| 我为Microsoft WebServer 2003 IIS 6.0使用OpenSSL创建了SSL证书。我也可以在客户端和服务器端安装和使用它。现在,我想将其用于sql Server Express 2008 R2,但它不会出现在sql Server配置管理器的证书列表中。我在互联网上尝试了很多此类提示,但没有一个起作用。我还在MS服务器上找到了先决条件列表,但不确定如何理解它: 证书必须位于本地计算机或当前用户证书存储中。 证书必须具有良好的时间戳,即当前系统时间必须在证书的有效时间窗口内。 证书必须用于服务器身份验证,即必须为服务器身份验证(1.3.6.1.5.5.7.3.1)打开证书的增强密钥使用属性。 证书的密钥规范必须包含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 
提前致谢, 安德烈     

解决方法

        我知道这已经有几个月的历史了,但是在寻找相同答案的过程中却碰到了它。 我在此链接中找到了解决方法 基本上看来,问题在于以“网络服务”运行的SQL服务没有使用密钥的权限。我按照步骤向网络服务授予了密钥的权利,并且一切正常。     ,        不要忘记将私钥包含在证书存储中要安装的文件中,否则证书将不会显示在列表中。还要检查您是否使用了正确的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 Configuration Manager中选择证书。 但是,如果服务器对您刚导入的私钥没有读访问权限,则它将无法启动。为此,您还必须赋予运行SQL Server的帐户(例如NETWORK SERVICE)适当的权限。只需右键单击刚导入的证书(在证书管理单元中),然后在“所有任务”下选择“管理私钥”。您可以在那里添加服务帐户并授予其读取权限。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?