intel的linux证书过期,数据库镜像中证书过期的解决方案
Normal
0
7.8 pt
0
2
false
false
false
EN-US
ZH-CN
X-NONE在非域控環(huán)境中創(chuàng)建數(shù)據(jù)庫鏡像, 我們必須使用證書來創(chuàng)建數(shù)據(jù)庫鏡像。 大致的步驟包括:
在為數(shù)據(jù)庫鏡像配置的每個(gè)服務(wù)器實(shí)例上執(zhí)行下列步驟:
在
master數(shù)據(jù)庫中,創(chuàng)建數(shù)據(jù)庫主密鑰。
在
master數(shù)據(jù)庫中,為服務(wù)器實(shí)例創(chuàng)建加密證書。
使用服務(wù)器實(shí)例的證書為該服務(wù)器實(shí)例創(chuàng)建端點(diǎn)。
將證書備份到文件,并將其安全地復(fù)制到其他系統(tǒng)。
然后,對為數(shù)據(jù)庫鏡像配置的每個(gè)伙伴執(zhí)行這些步驟。在 master數(shù)據(jù)庫中:
為其他系統(tǒng)創(chuàng)建登錄名。
創(chuàng)建一個(gè)使用該登錄名的用戶。
獲取其他服務(wù)器實(shí)例的鏡像端點(diǎn)的證書。
將該證書與在步驟2中創(chuàng)建的用戶相關(guān)聯(lián)。
授予對該鏡像端點(diǎn)的登錄名的CONNECT權(quán)限。
微軟聯(lián)機(jī)叢書提供了一個(gè)使用腳本創(chuàng)建使用證書的數(shù)據(jù)庫鏡像的步驟,請參閱
示例:使用證書設(shè)置數(shù)據(jù)庫鏡像(Transact-SQL)
其中的第2步創(chuàng)建證書時(shí),我們可以指定證書過期的日期。 如果不指定,默認(rèn)過期的時(shí)間是一年。當(dāng)證書過期之后,數(shù)據(jù)庫服務(wù)重啟之后鏡像將不工作。
檢查SQL Server錯(cuò)誤日志,有如下的消息:
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.'.
本文討論的是當(dāng)這個(gè)證書過期后如何恢復(fù)數(shù)據(jù)庫鏡像的解決方案。
---------------------------------------------------------------
解決問題的主要思路是重建一個(gè)證書,同時(shí)重建對應(yīng)的
鏡像端點(diǎn)以及重新給 登錄名賦予 連接的權(quán)限。以下是解決鏡像服務(wù)中鏡像服務(wù)器上的證書過期的具體步驟。
注意:如果你不了解證書,用戶,鏡像端點(diǎn)等概念,建議您先閱讀上面的示例文章
1.在鏡像服務(wù)器上,查詢database_mirroring_endpoints表,找到對應(yīng)的 鏡像端點(diǎn)
select* from
master.sys.database_mirroring_endpoints
2.刪除對應(yīng)的 鏡像端點(diǎn)
DROPENDPOINT Endpoint_Mirroring
3.在鏡像服務(wù)器上檢查 證書。這里一共有兩個(gè)鏡像相關(guān)證書,其中pvt_key_encryption_type是MK的是本機(jī)的證書,另一個(gè)是來自主體服務(wù)器的證書
select* from
master.sys.certificates
4.查看expiry_date這一列,刪除過期的
證書
DROP CERTIFICATEHOST_B_cert
此時(shí),如果有鏡像端點(diǎn)建立在這個(gè)證書上,會提示如下錯(cuò)誤消息:
Msg15187, Level 16, State 1, Line 1
The certificate cannot be dropped because it is used by one or more
endpoint(s).
5.創(chuàng)建新的 證書,指定一個(gè)新的
過期時(shí)間(不指定的話,默認(rèn)過期時(shí)間是一年)
CREATECERTIFICATE HOST_B_cert
WITH
SUBJECT = 'HOST_B certificate',
EXPIRY_DATE
= '04/06/2099'
;
6.基于新的證書創(chuàng)建 鏡像端點(diǎn)
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.由于 鏡像端點(diǎn)重建,因此,對應(yīng)的 登錄名 也需要重新給予
連接 的權(quán)限。
GRANTCONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_A_login];
GO
如果不給的話,在SQL Server錯(cuò)誤日志里我們可以看到如下錯(cuò)誤消息。
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.備份新的 證書
到文件,并將文件拷貝到 主體服務(wù)器上。
BACKUPCERTIFICATE HOST_B_cert TO FILE = 'C:\HOST_B_cert.cer';
GO
9.在 主體服務(wù)器
上檢查 證書。 這里一共有兩個(gè)鏡像相關(guān) 證書,其中pvt_key_encryption_type是MK的是本機(jī)的證書,另一個(gè)是來自鏡像服務(wù)器的證書。 這里需要?jiǎng)h除的是來自鏡像服務(wù)器的證書
select* from
master.sys.certificates
10.查看expiry_date這列,刪除這個(gè)過期的 證書
DROP CERTIFICATEHOST_B_cert
11.創(chuàng)建新的
證書
CREATECERTIFICATE HOST_B_cert
AUTHORIZATION
HOST_B_user
FROM
FILE = 'C:\HOST_B_cert.cer'
GO
12.檢查數(shù)據(jù)鏡像是否恢復(fù)正常。如果不正常,檢查主體服務(wù)器和鏡像服務(wù)器的SQL Server錯(cuò)誤日志,進(jìn)一步分析問題。
如果是主體服務(wù)器上的證書過期,解決思路也是一樣的。 當(dāng)然,最好是在創(chuàng)建證書的時(shí)候指定一個(gè)較長的過期時(shí)間,這樣就不會碰到這樣的麻煩啦。
總結(jié)
以上是生活随笔為你收集整理的intel的linux证书过期,数据库镜像中证书过期的解决方案的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux中增加软路由的两种方法,Lin
- 下一篇: ubuntu装双系统win7和linux