Docs Menu
Docs Home
/ /

부록 C - 자체 관리형 배포서버 테스트를 위한 OpenSSL 클라이언트 인증서

경고

면책 조항

이 페이지는 테스트 목적으로 만 제공되며 인증서는 테스트 목적으로만 사용됩니다.

다음 튜토리얼에서는 테스트 X.509 인증서를 생성하기 위한 몇 가지 기본 단계를 제공합니다.

  • 이 인증서를 프로덕션용으로 사용하지 마세요. 대신 보안 정책을 따르세요.

  • OpenSSL에 대한 자세한 내용은 공식 OpenSSL Docs를 참조하세요. 이 튜토리얼에서는 OpenSSL을 사용하지만, 이 자료를 OpenSSL에 대한 신뢰할 수 있는 참고 자료로 간주해서는 안 됩니다.

이 페이지에 설명된 절차에서는 부록 A - 자체 관리 배포서버 테스트를 위한 OpenSSL CA 인증서에 생성된 테스트 중간 기관 인증서와 키 mongodb-test-ia.crt mongodb-test-ia.key 및 를 사용합니다.

다음 절차에서는 MongoDB 클라이언트에 대한 테스트 인증서를 생성하는 단계를 간략하게 설명합니다. MongoDB 서버에 대한 테스트 인증서를 만드는 단계는 부록 B - 자체 관리형 배포서버 테스트를 위한 OpenSSL 서버 인증서를 참조하세요.

  1. 다음 콘텐츠로 클라이언트에 대한 테스트 구성 파일 openssl-test-client.cnf 를 만듭니다.

    # NOT FOR PRODUCTION USE. OpenSSL configuration file for testing.
    [ req ]
    default_bits = 4096
    default_keyfile = myTestClientCertificateKey.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 = testclient.example.com ## Replace with the valid DNS name for the client
    DNS.2 = localhost ## Optional additional values
    IP.1 = 192.168.1.10 ## Replace with the client IP address
    [ req_dn ]
    countryName = Country Name (2 letter code)
    countryName_default =
    countryName_min = 2
    countryName_max = 2
    stateOrProvinceName = State or Province Name (full name)
    stateOrProvinceName_default = TestClientCertificateState
    stateOrProvinceName_max = 64
    localityName = Locality Name (eg, city)
    localityName_default = TestClientCertificateLocality
    localityName_max = 64
    organizationName = Organization Name (eg, company)
    organizationName_default = TestClientCertificateOrg
    organizationName_max = 64
    organizationalUnitName = Organizational Unit Name (eg, section)
    organizationalUnitName_default = TestClientCertificateOrgUnit
    organizationalUnitName_max = 64
    commonName = Common Name (eg, YOUR name)
    commonName_max = 64

    참고

    SAN( 주체 대체 이름 )은 유효한 호스트 이름, IP 주소 및 기타 인증서 주체를 정의하기 위해 선호되는 최신 표준입니다. CN(일반 이름) 값이 지정되어 있지만 최신 TLS 표준에서는 CN이 SAN에 세컨더리 입니다. MongoDB 서버 SAN이 완전히 생략된 경우에만 호스트 이름 일치에 CN을 사용합니다.

  2. 선택 사항입니다. 기본 DN(고유 이름) 값을 업데이트할 수 있습니다.

    중요

    조직(O), 조직 단위(OU) 또는 도메인 구성 요소(DC) 속성 중 하나 이상과 관련하여 클라이언트 인증서가 서버 인증서와 다른지 확인합니다.

  1. 테스트 키 파일 mongodb-test-client.key 을 만듭니다.

    openssl genrsa -out mongodb-test-client.key 4096
  2. 테스트 인증서 서명 요청 mongodb-test-client.csr 을 만듭니다. 고유 이름 값을 입력하라는 메시지가 표시되면 테스트 인증서에 적합한 값을 입력합니다.

    중요

    클라이언트 인증서 주체는 조직(O), 조직 단위(OU) 또는 도메인 구성 요소(DC) 속성 중 하나 이상에서 서버 인증서 주체와 달라야 합니다.

    openssl req -new -key mongodb-test-client.key -out mongodb-test-client.csr -config openssl-test-client.cnf
  3. 테스트 클라이언트 인증서 mongodb-test-client.crt 을(를) 생성합니다.

    openssl x509 -sha256 -req -days 365 -in mongodb-test-client.csr -CA mongodb-test-ia.crt -CAkey mongodb-test-ia.key -CAcreateserial -out mongodb-test-client.crt -extfile openssl-test-client.cnf -extensions v3_req
  4. 클라이언트에 대한 테스트 PEM 파일을 만듭니다.

    cat mongodb-test-client.crt mongodb-test-client.key > test-client.pem

    테스트 PEM 파일을 사용하여 TLS/SSL 테스트 를mongosh 위해 를 구성할 수 있습니다. 예를 들어 mongod 또는 mongos 에 연결합니다.

    예시

    클라이언트에 대해 다음 옵션을 포함합니다.

    mongosh --tls --host <serverHost> --tlsCertificateKeyFile test-client.pem --tlsCAFile test-ca.pem
    macOS에서는

    키체인 접근으로 인증서를 managed하여 테스트 하는 경우, PEM 파일 대신 키체인 접근에 추가할 PKCS 12 파일을 생성합니다.

    openssl pkcs12 -export -out test-client.pfx -inkey mongodb-test-client.key -in mongodb-test-client.crt -certfile mongodb-test-ia.crt

    키체인 액세스에 추가한 후에는 인증서 키 파일을 지정하는 대신 --tlsCertificateSelector 를 사용하여 사용할 인증서를 지정할 수 있습니다. CA 파일이 키체인 액세스에도 있는 경우 다음 예와 마찬가지로 --tlsCAFile 를 생략할 수 있습니다.

    mongosh --tls --tlsCertificateSelector subject="<TestClientCertificateCommonName>"

    키체인 액세스에 인증서를 추가하려면 키체인 액세스 공식 문서를 참조하세요.

돌아가기

OpenSSL 서버