MQ 보안 인증서 연장 Db2
복제에 사용되는 IBM® MQ 보안 인증서의 수명을 기본값인 3년에서 100년으로 연장하여 인증서가 만료되지 않도록 하고 복제가 계속되지 않도록 할 수 있습니다.
이 태스크에 대한 정보
자체 서명된 MQ TLS(전송 계층 보안) 인증서는 내부적으로 소스에서 대상으로 데이터를 전송하는 데 사용됩니다. 기본적으로 MQ 인증서의 만료 기간은 SSL Db2 인증서와 일치하도록 3년입니다. 그러나 복제가 활성 상태인 동안 MQ 인증서가 만료되면 MQ 큐의 데이터를 복구할 수 없으며 모든 복제 대상 테이블을 전체 새로 고침해야 합니다.
다음 프로시저는 이러한 상황을 방지하기 위해 MQ 인증서의 수명을 연장합니다.
프로시저
- 다음 단계에 따라 소스 시스템에서 모든 송신 큐를 중지하십시오.
- 다음 SQL 문을 사용하여 복제 메타데이터에 있는 송신 큐의 상태를 비활성(I)으로 설정하십시오.
update qasn.ibmqrep_sendqueues set state='I' - 캡처 프로그램 스레드의 이름을 찾으십시오.
다음 예제에서 스레드(ps -ef|grep asnqcapcapture_server) 이름은 FRKJKKDZ입니다.dsadm 1576952 1576022 1 10:22 pts/3 00:01:08 /opt/ibm/db2/V11.5.0.0/bin/asnqcap capture_server=FRKJKKDZ capture_schema=QASN capture_path=/mnt/blumeta0/bludr/logs/replication xf_del_file=y qfull_retry_delay=60000 qfull_num_retries=1000 max_capstarts_intload=5 term=n use_stream_trans=y startallq=n - 캡처 프로그램을 다시 초기화하여 송신 큐 상태가 변경되도록 하십시오.
asnqccmd capture_server=FRKJKKDZ capture_schema=QASN reinit
- 다음 SQL 문을 사용하여 복제 메타데이터에 있는 송신 큐의 상태를 비활성(I)으로 설정하십시오.
- 대상 시스템에서 다음 단계를 수행하여 모든 수신 큐가 비어 있는지 확인하십시오.
- MQ 명령
dspmq을 실행하여 큐 관리자의 이름을 찾으십시오.이 출력에서 큐 관리자 이름은
AOMTDBXP_AQM입니다.QMNAME(AOMTDBXP_AQM) STATUS(Running) - 다음 명령을 실행하여 모든 수신 큐의 현재 깊이(메시지 수)가 0인지 확인하십시오.
runmqc AOMTDBXP_AQM DISPLAY QLOCAL(*) CURDEPTH출력에 CURDEPTH 값으로 0이 표시됩니다.
20 : DISPLAY QLOCAL(*) CURDEPTH AMQ8409I: Display Queue details. QUEUE(SET10001_RECVQ) TYPE(QLOCAL) CURDEPTH(0) AMQ8409I: Display Queue details. QUEUE(SET10001_RECVQ_FT) TYPE(QLOCAL) CURDEPTH(0) AMQ8409I: Display Queue details. QUEUE(SET10001_RECVQ_FT.2) TYPE(QLOCAL) CURDEPTH(0) AMQ8409I: Display Queue details. QUEUE(SET10001_RECVQ_FT.3) TYPE(QLOCAL) CURDEPTH(0) AMQ8409I: Display Queue details. QUEUE(SET10001_RECVQ_FT.4) TYPE(QLOCAL) CURDEPTH(0)
- MQ 명령
- 소스 시스템에서 다음 단계를 수행하여 ADMINQ, ACKFT 및 XMITQ 큐가 비어 있는지 확인하십시오.
- IBM MQ 명령
dspmq을 실행하여 큐 관리자의 이름을 찾으십시오.이 출력에서 큐 관리자 이름은
FRKJKKDZ_CQM입니다.QMNAME(FRKJKKDZ_CQM) STATUS(Running) - 다음 명령을 실행하여 모든 로컬 큐의 현재 깊이(메시지 수)가 0인지 확인하십시오.
runmqsc FRKJKKDZ_CQM DISPLAY QLOCAL(*) CURDEPTH출력에 ADMINQ, ACKFT, XMITQ 큐 및 기타 로컬 큐에 대한 CURDEPTH 값으로 0이 표시됩니다.
1 : DISPLAY QLOCAL(*) CURDEPTH AMQ8409I: Display Queue details. QUEUE(FRKJKKDZ_ADMINQ) TYPE(QLOCAL) CURDEPTH(0) AMQ8409I: Display Queue details. QUEUE(SET10001_ACKFT) TYPE(QLOCAL) CURDEPTH(0) AMQ8409I: Display Queue details. QUEUE(SET10001_TXQ) TYPE(QLOCAL) CURDEPTH(0) AMQ8409I: Display Queue details. QUEUE(SET10001_TXQ_FT) TYPE(QLOCAL) CURDEPTH(0) AMQ8409I: Display Queue details. QUEUE(SET10001_TXQ_FT.2) TYPE(QLOCAL) CURDEPTH(0) AMQ8409I: Display Queue details. QUEUE(SET10001_TXQ_FT.3) TYPE(QLOCAL) CURDEPTH(0) AMQ8409I: Display Queue details. QUEUE(SET10001_TXQ_FT.4) TYPE(QLOCAL) CURDEPTH(0)
- IBM MQ 명령
- 소스 데이터베이스에서 캡처 프로그램 중지
- 캡처 프로세스를 중지하십시오.
asnqccmd capture_server=FRKJKKDZ capture_schema=QASN stop - asnqcap 스레드가 더 이상 존재하지 않음을 확인하십시오.
ps -ef|grep asnqcap
- 캡처 프로세스를 중지하십시오.
- 다음 단계를 수행하여 대상 데이터베이스에서 적용 프로그램을 중지하십시오.
- 적용 서버의 이름을 찾으십시오.
다음 예제에서 서버 이름은 AOMTDBXP입니다.ps -ef|grep asnqappdsadm 1614543 1614088 0 10:28 pts/3 00:00:18 /opt/ibm/db2/V11.5.0.0/bin/asnqapp apply_server=AOMTDBXP apply_schema=QASN apply_path=/mnt/blumeta0/bludr/logs/replication CDE_FILE_MISSING_TIMEOUT=600 term=n et_load_named_pipe_group_id=3000 startallq=y - 적용 프로세스를 중지하십시오.
asnqacmd apply_server=AOMTDBXP apply_schema=QASN stop - asnqapp 스레드가 더 이상 존재하지 않음을 확인하십시오.
ps -ef|grep asnqapp
- 적용 서버의 이름을 찾으십시오.
- 다음 컨텐츠를 사용하여 쉘 스크립트 파일을 작성하고 bludr-mq-renew-cert.sh로 저장하십시오.
#/bin/bash DECRYPT_PW=$(/opt/ibm/dsserver/scripts/decrypt.sh $(cat ~dsadm/.mqs/kdb.pass)) DIST_NAME=`grep "MQ_DIST_NAME" /opt/ibm/apiserver/wlp/usr/servers/bludr/server.env` DIST_NAME=${DIST_NAME#*=} CN_NAME=`grep "MQ_CN_NAME" /opt/ibm/apiserver/wlp/usr/servers/bludr/server.env` CN_NAME=${CN_NAME#*=} GSKIT_CMD="$(ls -1d /opt/ibm/db2/V*)/gskit/bin/gsk8capicmd_64" openssl x509 -in ${BLUDR_SHARED_DIR}/certificates/mq_public_cert.arm -text -noout | head -n 10 > ~dsadm/openssl.backup.txt cat ~dsadm/openssl.backup.txt cp -r ~dsadm/.mqs ~dsadm/.mqsbackup rm -f ~dsadm/.mqs/dsadm* ${GSKIT_CMD} -keydb -create -db ~/.mqs/dsadmkey.kdb -pw ${DECRYPT_PW} -stash ${GSKIT_CMD} -cert -create -db ~dsadm/.mqs/dsadmkey.kdb -pw ${DECRYPT_PW} -expire 36500 -label ${CN_NAME} -dn ${DIST_NAME} -default_cert yes mv ${BLUDR_SHARED_DIR}/certificates/mq_public_cert.arm ${BLUDR_SHARED_DIR}/certificates/mq_public_cert.arm.backup ${GSKIT_CMD} -cert -extract -db ~/.mqs/dsadmkey.kdb -pw ${DECRYPT_PW} -label ${CN_NAME} -target ${BLUDR_SHARED_DIR}/certificates/mq_public_cert.arm openssl x509 -in ${BLUDR_SHARED_DIR}/certificates/mq_public_cert.arm -text -noout | head -n 10 - 소스 및 대상 모두에서 bludr-mq-renew-cert.sh 스크립트를 실행하십시오. 출력에서 두 번째
Validity섹션을 확인하고Not After값이 약 100년 (2121이상) 인지 확인하십시오.$ ./bludr-mq-renew-cert.sh Certificate: Data: Version: 3 (0x2) Serial Number: 3686575169745515400 (0x33295895a674f388) Signature Algorithm: sha256WithRSAEncryption Issuer: C=US, O=IBM, CN=4818ff96-c9ec-4316-be2a-78ac79d2838d Validity Not Before: Dec 2 08:20:43 2021 GMT Not After : Dec 2 08:20:43 2024 GMT Subject: C=US, O=IBM, CN=4818ff96-c9ec-4316-be2a-78ac79d2838d Certificate: Data: Version: 3 (0x2) Serial Number: 3382945298641481939 (0x2ef2a2d3541a70d3) Signature Algorithm: sha256WithRSAEncryption Issuer: C=US, O=IBM, CN=4818ff96-c9ec-4316-be2a-78ac79d2838d Validity Not Before: Dec 4 11:50:32 2021 GMT Not After : Nov 11 11:50:32 2121 GMT Subject: C=US, O=IBM, CN=4818ff96-c9ec-4316-be2a-78ac79d2838d - 소스 시스템에서 bludr-trust-targets.sh 스크립트를 실행하십시오.
/opt/ibm/bludr/scripts/bin/bludr-trust-targets.sh add 9.30.43.143 bluadmin bluadmin 9.30.161.62 9444 - 소스 및 대상 모두에서 bludr-restart.sh 스크립트를 실행하여 캡처 및 적용 프로그램을 다시 시작하십시오.
/opt/ibm/bludr/scripts/bin/bludr-restart.sh - 소스 및 대상 모두에서 bludr-status.sh 스크립트를 실행하여 복제 REST 서버가 활성 상태인지 확인하십시오.
/opt/ibm/bludr/scripts/bin/bludr-status.sh - 다음 단계에 따라 소스 시스템에서 모든 송신 큐를 시작하십시오.
- 다음 SQL 문을 사용하여 복제 메타데이터에 있는 송신 큐의 상태를 활성(A)으로 설정하십시오.
update qasn.ibmqrep_sendqueues set state='A' - 캡처 프로그램을 다시 초기화하여 송신 큐 상태가 변경되도록 하십시오.
asnqccmd capture_server=FRKJKKDZ capture_schema=QASN reinit
- 다음 SQL 문을 사용하여 복제 메타데이터에 있는 송신 큐의 상태를 활성(A)으로 설정하십시오.