intel的linux证书过期,数据库镜像中证书过期的解决方案
Normal
0
7.8 pt
0
2
false
false
false
EN-US
ZH-CN
X-NONE在非域控環境中創建數據庫鏡像, 我們必須使用證書來創建數據庫鏡像。 大致的步驟包括:
在為數據庫鏡像配置的每個服務器實例上執行下列步驟:
在
master數據庫中,創建數據庫主密鑰。
在
master數據庫中,為服務器實例創建加密證書。
使用服務器實例的證書為該服務器實例創建端點。
將證書備份到文件,并將其安全地復制到其他系統。
然后,對為數據庫鏡像配置的每個伙伴執行這些步驟。在 master數據庫中:
為其他系統創建登錄名。
創建一個使用該登錄名的用戶。
獲取其他服務器實例的鏡像端點的證書。
將該證書與在步驟2中創建的用戶相關聯。
授予對該鏡像端點的登錄名的CONNECT權限。
微軟聯機叢書提供了一個使用腳本創建使用證書的數據庫鏡像的步驟,請參閱
示例:使用證書設置數據庫鏡像(Transact-SQL)
其中的第2步創建證書時,我們可以指定證書過期的日期。 如果不指定,默認過期的時間是一年。當證書過期之后,數據庫服務重啟之后鏡像將不工作。
檢查SQL Server錯誤日志,有如下的消息:
2011-04-06 10:30:29.050
Logon??????? Database Mirroring login
attempt failed with error: 'Connection handshake failed. The certificate used
by this endpoint was not found: Certificate expired. Use DBCC CHECKDB in master
database to verify the metadata integrity of the endpoints. State 85.'.
本文討論的是當這個證書過期后如何恢復數據庫鏡像的解決方案。
---------------------------------------------------------------
解決問題的主要思路是重建一個證書,同時重建對應的
鏡像端點以及重新給 登錄名賦予 連接的權限。以下是解決鏡像服務中鏡像服務器上的證書過期的具體步驟。
注意:如果你不了解證書,用戶,鏡像端點等概念,建議您先閱讀上面的示例文章
1.在鏡像服務器上,查詢database_mirroring_endpoints表,找到對應的 鏡像端點
select* from
master.sys.database_mirroring_endpoints
2.刪除對應的 鏡像端點
DROPENDPOINT Endpoint_Mirroring
3.在鏡像服務器上檢查 證書。這里一共有兩個鏡像相關證書,其中pvt_key_encryption_type是MK的是本機的證書,另一個是來自主體服務器的證書
select* from
master.sys.certificates
4.查看expiry_date這一列,刪除過期的
證書
DROP CERTIFICATEHOST_B_cert
此時,如果有鏡像端點建立在這個證書上,會提示如下錯誤消息:
Msg15187, Level 16, State 1, Line 1
The certificate cannot be dropped because it is used by one or more
endpoint(s).
5.創建新的 證書,指定一個新的
過期時間(不指定的話,默認過期時間是一年)
CREATECERTIFICATE HOST_B_cert
WITH
SUBJECT = 'HOST_B certificate',
EXPIRY_DATE
= '04/06/2099'
;
6.基于新的證書創建 鏡像端點
CREATEENDPOINT Endpoint_Mirroring
STATE
= STARTED
AS
TCP(
LISTENER_PORT=7024
, LISTENER_IP = ALL
)
FOR
DATABASE_MIRRORING(
AUTHENTICATION = CERTIFICATE HOST_B_cert
, ENCRYPTION = REQUIRED ALGORITHM AES
, ROLE = ALL
);
GO
7.由于 鏡像端點重建,因此,對應的 登錄名 也需要重新給予
連接 的權限。
GRANTCONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_A_login];
GO
如果不給的話,在SQL Server錯誤日志里我們可以看到如下錯誤消息。
2011-04-06 11:01:23.050
Logon??????? Database Mirroring login
attempt failed with error: 'Connection handshake failed. The login 'HOST_A_login' does not have CONNECT permission on the
endpoint. State 84.'.? [CLIENT: 2001:4898:0:fff:0:5efe:10.172.8.189]
8.備份新的 證書
到文件,并將文件拷貝到 主體服務器上。
BACKUPCERTIFICATE HOST_B_cert TO FILE = 'C:\HOST_B_cert.cer';
GO
9.在 主體服務器
上檢查 證書。 這里一共有兩個鏡像相關 證書,其中pvt_key_encryption_type是MK的是本機的證書,另一個是來自鏡像服務器的證書。 這里需要刪除的是來自鏡像服務器的證書
select* from
master.sys.certificates
10.查看expiry_date這列,刪除這個過期的 證書
DROP CERTIFICATEHOST_B_cert
11.創建新的
證書
CREATECERTIFICATE HOST_B_cert
AUTHORIZATION
HOST_B_user
FROM
FILE = 'C:\HOST_B_cert.cer'
GO
12.檢查數據鏡像是否恢復正常。如果不正常,檢查主體服務器和鏡像服務器的SQL Server錯誤日志,進一步分析問題。
如果是主體服務器上的證書過期,解決思路也是一樣的。 當然,最好是在創建證書的時候指定一個較長的過期時間,這樣就不會碰到這樣的麻煩啦。
總結
以上是生活随笔為你收集整理的intel的linux证书过期,数据库镜像中证书过期的解决方案的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux中增加软路由的两种方法,Lin
- 下一篇: linux安装12c oem,OEM12