服务器ssl证书升级
最近服务器扫描出ssl证书是使用弱哈希算法签名的SSL证书(CVE-2004-2761)【原理扫描】,要求联系证书颁发机构重新颁发证书。使用弱哈希算法签名SSL证书的端口有1433,3389。所有要对这俩端口配置一个新的证书。算法且满足sha256。
下面是我我服务器证书升级步骤。(还需下载ssl证书生成工具)
ssl证书生成工具下载链接:https://download..net/download/rainjm/87351536
注意:大胆尝试,升级ssl证书不会对应用服务器造成什么影像的。
1.下载好工具后上传至服务器C:\Windows\System32路径下,解压到当前文件夹。
2.打开服务自带的Windows PowerShell,cd进入C:\Windows\System32路径下
3.进入C:\Windows\System32后运行下面命令,然后按下回车。
makecert -r -pe -n "CN=Server" -b 01/01/2022 -e 01/01/2032 -sky exchange -sv ServerPublicKey.pvk ServerPublicKey.cer -a sha256 -len 2048
4.界面会弹出创建秘钥的界面 ,创建自己的自定义秘钥,秘钥最好是自己比较好记的,后续还会用到。
输入完成后还会在弹出输入私钥密码界面,输入刚才创建的私钥秘钥就可以了
输入完成后Windows PowerShell界面里会succeeded提示,表示操作成功。
5.创建ssl证书,输入以下命令,其中password为刚输入的秘钥,需要替换掉哦。输入命令后回车。界面无提示表示成功。然后关闭窗口,不会在用到。
pvk2pfx -pvk ServerPublicKey.pvk -spc ServerPublicKey.cer -pfx ServerPrivateKey.pfx -pi password
6.打开运行窗口输入mmc回车打开管理控制台.
7.打开控制台的文件,然后点击添加/删除管理单元,然后弹出添加/删除管理单元界面。
8.点击添加/删除管理单元界面里的证书,然后点击添加,然后弹出证书管理单元界面。
9.证书管理单元界面选择计算机账户,然后下一步
10.点击左侧的证书,证书(右键)–>所有任务–>导入–>本地机计算–>下一步–>在选择框里输入C:\Windows\SysWOW64\ServerPrivateKey.pfx–>下一步–>输入刚才创建的秘钥–>确定–>下一步–>选择将所有的证书都放入下列存储->完成–>导入成功–>证书(双击)–>出现带私钥的Server证书
11.添加证书访问权限。 Server证书(右键)–>所有任务–>管理私钥–>添加–>输入对象名称来选择–>NETWORK SERVICE–>检查名称–>确定–>分配NETWORK SERVICE读取权限–>确定
12.双击server证书。 查看证书里的详细信息(特别是指纹值)
13.通过Windows+R打开运行regedit
14.打开路径:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp
创建SSLCertificateSHA1Hash ,然后选择二进制值。
再次右键点击创建好的SSLCertificateSHA1Hash,选择修改二进制值数据,把上面server证书里的指纹值输入进去就可以了。
15.证书创建生效完成了。可以去申请接收漏洞扫描了。这个是ssl证书(3389端口)的。1433端口证书升级也是大同小异。需要打开路径HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQLServer\SuperSocketNetLib
创建Certificate,然后选择二进制值。再次右键点击创建好的Certificate,选择修改二进制值数据,把上面server证书里的指纹值输入进去就可以了。
注意:通过Certificate键值中记录的证书的指纹值来到certificate store中寻找相应的证书。如果找不到该证书,则SQL Server启动失败。
如果Certificate键值为空,则SQL Server到certificate store中去寻找subject CN与SQL Server服务器主机的FQDN相同的证书。如果有这样的证书存在,SQL Server就读取第一个它找到的证书,装载并启动。
如果Certificate键值为空,则SQL Server到certificate store中去寻找subject CN与SQL Server服务如果还是找不到证书,则SQL Server就自动生成一个证书并使用这个证书启动。
有人可能是通过SQL Server configuration manager来选择证书并将它配置给SQL Server的。其实SQL Server configuration manager也是通过写Certificate键值来达到配置证书的目的。另外要注意的是SQL Server configuration manager中的下拉列表只能显示那些subject CN与SQL Server服务器主机的FQDN相同的证书。因此如果你需要配置一个CN与SQL Server服务器主机的FQDN不同的证书的话(除非是cluster环境,否则不推荐这样做,可能导致客户端连接问题),就需要使用手动修改Certificate键值的方法。
其次,如果不指定Certificate键值的话,则SQL Server自动搜索Certificate store中符合要求的证书。此时如果存在多个证书的话,我们是无法控制SQL Server选择哪个证书的。理论上SQL Server使用它找到的“第一个”证书,但是我们不能确定第一个证书是哪个。