부록 B - 자체 관리 배포서버 테스트를 위한 OpenSSL 서버 인증서
경고
면책 조항
이 페이지는 테스트 목적으로 만 제공되며 인증서는 테스트 목적으로만 사용됩니다.
다음 튜토리얼에서는 테스트 x.509 인증서를 생성하기 위한 몇 가지 기본 단계를 제공합니다.
이 인증서를 프로덕션용으로 사용하지 마세요. 대신 보안 정책을 따르세요.
OpenSSL에 대한 자세한 내용은 공식 OpenSSL Docs를 참조하세요. 이 튜토리얼에서는 OpenSSL을 사용하지만, 이 자료를 OpenSSL에 대한 신뢰할 수 있는 참고 자료로 간주해서는 안 됩니다.
전제 조건
이 페이지에 설명된 절차에서는 부록 A - 자체 관리 배포서버 테스트를 위한 OpenSSL CA 인증서에 생성된 테스트 중간 기관 인증서와 키 mongodb-test-ia.crt
및 mongodb-test-ia.key
를 사용합니다.
절차
다음 절차에서는 MongoDB 서버에 대한 테스트 인증서를 생성하는 단계를 간략하게 설명합니다. MongoDB 클라이언트에 대한 테스트 인증서를 만드는 단계는 부록 C - 자체 관리형 배포서버 테스트를 위한 OpenSSL 클라이언트 인증서를 참조하세요.
A. OpenSSL 구성 파일 생성
다음 콘텐츠로 서버에 대한 테스트 구성 파일
openssl-test-server.cnf
를 만듭니다.# NOT FOR PRODUCTION USE. OpenSSL configuration file for testing. [ req ] default_bits = 4096 default_keyfile = myTestServerCertificateKey.pem ## The default private key file name. default_md = sha256 distinguished_name = req_dn req_extensions = v3_req [ v3_req ] subjectKeyIdentifier = hash basicConstraints = CA:FALSE keyUsage = critical, digitalSignature, keyEncipherment nsComment = "OpenSSL Generated Certificate for TESTING only. NOT FOR PRODUCTION USE." extendedKeyUsage = serverAuth, clientAuth subjectAltName = @alt_names [ alt_names ] DNS.1 = ##TODO: Enter the DNS names. The DNS names should match the server names. DNS.2 = ##TODO: Enter the DNS names. The DNS names should match the server names. IP.1 = ##TODO: Enter the IP address. IP.2 = ##TODO: Enter the IP address. [ req_dn ] countryName = Country Name (2 letter code) countryName_default = TestServerCertificateCountry countryName_min = 2 countryName_max = 2 stateOrProvinceName = State or Province Name (full name) stateOrProvinceName_default = TestServerCertificateState stateOrProvinceName_max = 64 localityName = Locality Name (eg, city) localityName_default = TestServerCertificateLocality localityName_max = 64 organizationName = Organization Name (eg, company) organizationName_default = TestServerCertificateOrg organizationName_max = 64 organizationalUnitName = Organizational Unit Name (eg, section) organizationalUnitName_default = TestServerCertificateOrgUnit organizationalUnitName_max = 64 commonName = Common Name (eg, YOUR name) commonName_max = 64 [alt_names]
섹션에 MongoDB 서버 에 적합한 DNS 이름 및/또는 IP 주소를 입력합니다. MongoDB 서버 에 대해 여러 개의 DNS 이름을 지정할 수 있습니다.OpenSSL SAN 식별자의 경우 MongoDB는 다음을 지원합니다.
DNS 이름 및/또는
IP 주소 필드
선택 사항입니다. 기본 DN(고유 이름) 값을 업데이트할 수 있습니다.
팁
조직(
O
), 조직 단위(OU
) 또는 도메인 구성 요소(DC
) 속성 중 하나 이상에 대해 비어 있지 않은 값을 지정합니다.내부 멤버십 인증을 위한 테스트 서버 인증서를 만들 때 지정된 경우 조직(
O
), 조직 단위(OU
), 도메인 구성 요소(DC
) 속성이 지정된 경우 구성원 인증서 전체에서 정확히 일치해야 합니다.내부 멤버십 인증을 위한 요구 사항에 대한 자세한 내용은 멤버십 인증을 참조하세요 .
B. 서버에 대한 테스트 PEM 파일 생성
중요
계속 진행하기 전에 구성 파일 openssl-test-server.cnf
의 [alt_names]
섹션에 적절한 DNS 이름을 입력했는지 확인하십시오.
테스트 키 파일
mongodb-test-server1.key
을 만듭니다.openssl genrsa -out mongodb-test-server1.key 4096 테스트 인증서 서명 요청
mongodb-test-server1.csr
을 만듭니다.고유 이름 값을 입력하라는 메시지가 표시되면 테스트 인증서에 적합한 값을 입력합니다.
조직(
O
), 조직 단위(OU
) 또는 도메인 구성 요소(DC
) 속성 중 하나 이상에 대해 비어 있지 않은 값을 지정합니다.내부 멤버십 인증을 위한 테스트 서버 인증서를 만들 때 지정된 경우 조직(
O
), 조직 단위(OU
), 도메인 구성 요소(DC
) 속성이 지정된 경우 구성원 인증서 전체에서 정확히 일치해야 합니다.
openssl req -new -key mongodb-test-server1.key -out mongodb-test-server1.csr -config openssl-test-server.cnf 테스트 서버 인증서
mongodb-test-server1.crt
을 만듭니다.openssl x509 -sha256 -req -days 365 -in mongodb-test-server1.csr -CA mongodb-test-ia.crt -CAkey mongodb-test-ia.key -CAcreateserial -out mongodb-test-server1.crt -extfile openssl-test-server.cnf -extensions v3_req 서버에 대한 테스트 PEM 파일을 만듭니다.
cat mongodb-test-server1.crt mongodb-test-server1.key > test-server1.pem TLS/SSL 테스트
mongos
를 위해 또는 를 구성할 때mongod
테스트 PEM 파일을 사용할 수 있습니다. 예를 들면 다음과 같습니다.예시
mongod --tlsMode requireTLS --tlsCertificateKeyFile test-server1.pem --tlsCAFile test-ca.pem - macOS에서는
키체인 액세스로 인증서를 managed하여 테스트 하는 경우 PEM 파일 대신 키체인 액세스에 추가할 pkcs-12 파일을 생성합니다.
openssl pkcs12 -export -out test-server1.pfx -inkey mongodb-test-server1.key -in mongodb-test-server1.crt -certfile mongodb-test-ia.crt 키체인 액세스에 추가한 후에는 인증서 키 파일을 지정하는 대신
--tlsCertificateSelector
를 사용하여 사용할 인증서를 지정할 수 있습니다. CA 파일이 키체인 액세스에도 있는 경우--tlsCAFile
도 생략할 수 있습니다.mongod --tlsMode requireTLS --tlsCertificateSelector subject="<TestServerCertificateCommonName>"