证书的理解
参考Sqlserver的官方文档https://learn.microsoft.com/zh-cn/sql/database-engine/configure-windows/certificate-overview?view=sql-server-ver16
TLS(Transport Layer Security)传输层安全和SSL(Secure Sockets Layer)安全套接字层协议位于应用程序协议层和TCP/IP层之间,它们可在其中保护应用程序数据并将其发送到传输层。 TLS/SSL协议使用密码套件中的算法来创建密钥并对信息加密。 在建立连接的初始连接(预登录)阶段,客户端和服务器协商用于加密的协议版本和密码套件。SQL Server可以使用TLS对通过网络在SQL Server实例与客户端应用程序之间传输的数据进行加密。 TLS使用证书来实现加密。 从SQL Server 2016开始,SSL已停止使用。 改为使用TLS,SQL Server 2022引入了对TLS 1.3的支持。
数字证书是电子文件,其运行方式如同可验证用户或计算机身份的联机密码。 使用它们创建用于客户端通信的加密通道。 证书是由证明证书持有者的身份的证书颁发机构(CA)颁发的数字声明,它使各方可通过使用加密来安全地进行通信。
数字证书提供以下服务:
加密:它们有助于保护交换的数据不被盗窃或篡改。
身份验证:它们验证其持有者(用户、网站甚至是路由器等网络设备)自称的身份是否的确属实。 通常,身份验证是单向的,其中源会验证目标的身份,但也可以进行相互的 TLS 身份验证。
证书包含一个公钥,并将该公钥附加至用户、计算机或持有相应私钥的服务的身份。 公钥和私钥由客户端和服务器用于在数据传输前对数据进行加密。 对于 Windows 用户、计算机和服务,当在受信任的根证书存储中定义了根证书且该证书包含有效的证书路径时,将在CA中建立信任。 如果证书尚未被撤销(它不在 CA 的证书吊销列表或 CRL 中)或已过期,则将其视为有效。
数字证书的三种主要类型
1自签名证书:证书由创建它的应用程序签名,或使用 New-SelfSignedCertificate 创建。证书不会被客户端计算机和移动设备自动信任。 需要手动将证书添加到所有客户端计算机和设备上的受信任的根证书存储中,但并非所有移动设备都允许更改受信任的根证书存储。
2由内部CA颁发的证书:该证书由组织中的公钥基础结构颁发, 例如Active Directory证书服务。 证书不会被客户端计算机和移动设备自动信任。 需要手动将证书添加到所有客户端计算机和设备上的受信任的根证书存储中,但并非所有移动设备都允许更改受信任的根证书存储。
3由商业CA颁发的证书:证书是从受信任的商业CA购买的。证书部署简化,因为所有客户端、设备和服务器都自动信任证书。
若要证明证书持有者自称的身份属实,证书必须向其他客户端、设备或服务器准确地标识证书持有者。实现此目的的三种基本方法:
1证书使用者匹配:证书的“使用者”字段包含主机的公用名。例如,颁发给www.contoso.com的证书可用于网站https://www.contoso.com。只能将证书用于指定的主机。 例如,即使将服务安装在同一台服务器上,也不能对 ftp.contoso.com使用www.contoso.com 证书。与所有客户端、设备和服务都兼容。撤销某个主机的证书不影响其他主机。
2证书使用者可选名称匹配:除了“使用者”字段之外,证书的“使用者可选名称”字段还包含多个主机名的列表。 例如:www.contoso.com或ftp.contoso.com或ftp.eu.fabrikam.net。可以对多个不同域中的多个主机使用同一证书。在创建证书时,需要提供主机列表。你确切地知道哪些主机能够使用证书。
3通配符证书匹配:证书的“使用者”字段包含作为通配符()以及单个域或子域的公用名。 例如,.contoso.com通配符证书可用于:www.contoso.com或ftp.contoso.com或mail.contoso.com。很灵活。 在请求证书时,不需要提供主机列表,且可在将来可能需要的任何数量的主机上使用该证书。不能将通配符证书与其他顶级域一起使用, 例如,不能将 *.contoso.com 通配符证书用于 *.contoso.net 主机。只能在通配符级别上对主机名使用通配符证书, 例如,不能将 *.contoso.com 证书用于 www.eu.contoso.com, 也不能将 *.eu.contoso.com 证书用于 www.uk.eu.contoso.com。
Windows中查看证书的有效期的cmd命令
certutil -dump G:\Share\TLS\star.panaray.com.pem | findstr /C:"NotBefore" /C:"NotAfter"
certutil -dump G:\Share\TLS\star.panaray.com.pem | findstr "NotBefore NotAfter"
linux中查看证书的有效期的shell命令
openssl x509 -in /etc/elasticsearch/certs/star.panaray.com.pem -noout -dates
所以,现在如果公司局域网内的域名是dai.com,所有数据库服务器都在这个域名内,也就是说数据库服务器的FQDN完整主机名都是dbservername.dai.com这样子的,所以如果需要给公司局域网内的数据库服务器启用TLS,那么证书最好就是使用商业CA颁发的证书(数字证书的三种主要类型中的第三种),并且使用通配符来匹配证书(证明证书持有者自称的身份属实的三种方法中的第三种),通配符为*dai.com