證書的理解
參考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