Sharding Cluster 만들기(4) : 인증서 발급

arky uhm·2025년 5월 23일

MongoDB

목록 보기
11/14

인증서 발급 전 구성파일 내 디렉토리를 생성한다.

## comppose yml파일과 conf파일이 있는 곳으로 이동 
# cd /drives/c/mongodata_shard
# mkdir -p ./data/config1 ./data/config2 ./data/config3 
# mkdir -p ./data/shard1_a ./data/shard1_b ./data/shard1_c 
# mkdir -p ./logs/config1 ./logs/config2 ./logs/config3 
# mkdir -p ./logs/shard1_a ./logs/shard1_b ./logs/shard1_c 
# mkdir certs

✅ 인증서 발급


1. CA 개인 키 생성 (ca_sharded.key)
# cd /drives/c/mongodata_shard/certs
# openssl genrsa -out ca_sharded.key 2048
  • genrsa : RSA 개인 키를 생성
    • out certs/ca_sharded.key : 생성될 개인 키 파일의 경로와 이름
  • 2048 : 키의 비트 길이

2. CA 인증서 생성 (ca_sharded.pem)
# openssl req -x509 -new -nodes -key ca_sharded.key -sha256 -days 3650 -out ca_sharded.pem -subj "/C=KR/ST=Seoul/L=Seoul/O=MyCompany/OU=MyDept/CN=MongoDBShardedCA"
  • req : 인증서 서명 요청(CSR) 관리 유틸리티로써 -x509 옵션과 함께 사용하면 자체 서명된 인증서를 생성
  • -new : 새 인증서 요청을 생성
  • -nodes : 개인 키를 암호화하지 않는다는 의미로써 배포 및 자동 시작에 용이함
  • -key certs/ca_sharded.key : 서명에 사용할 개인 키를 지정
  • -sha256 : 해싱 알고리즘으로 SHA256을 사용
  • -days 3650 : 인증서의 유효 기간을 3650일(약 10년)로 설정
  • -out certs/ca_sharded.pem : 생성될 CA 인증서 파일의 경로와 이름
  • -subj "/C=KR/ST=Seoul/..." : 인증서의 주제(Subject) 정보를 명령줄에서 직접 지정하는데, CN을 MongoDBShardedCA로 변경하여 샤딩용 CA임을 명확히 하는 것이 좋음

3. MongoDB 개인 키 생성 (mongodb_sharded.key)
--mongodb_sharded.key
# openssl genrsa -out mongodb_sharded.key 2048

클러스터의 모든 mongod 및 mongos 인스턴스에서 개인키로 사용


4. MongoDB CSR 생성 (mongodb_sharded.csr)
--mongodb_sharded.csr
# openssl req -new -key mongodb_sharded.key -out mongodb_sharded.csr -config san_replica_shard.cnf -extensions v3_req -subj "/C=KR/ST=Seoul/L=Seoul/O=MyCompany/OU=MyDept/CN=mongodb_sharded_c"
  • -config san_replica_shard.cnf : (가장 중요) 새로 생성한 san_replica_shard.cnf 파일을 사용하여 SAN 정보를 포함한 CSR을 생성
  • -extensions v3_req : san_replica_shard.cnf 파일의 [v3_req] 섹션에 정의된 확장(SAN 포함)을 사용하도록 지정
  • -subj "/C=KR/ST=Seoul/..." : CSR의 주제 정보를 지정하는데 CN을 mongodb_sharded_cluster로 변경

5. MongoDB 인증서 생성 (mongodb_sharded.crt) + ca_sharded.srl
--mongodb_sharded.crt + ca_sharded.srl
# openssl x509 -req -in mongodb_sharded.csr -CA ca_sharded.pem -CAkey ca_sharded.key -CAcreateserial -out mongodb_sharded.crt -days 3650 -sha256 -extfile san_replica_shard.cnf -extensions v3_req
  • x509 : X.509 인증서를 처리하는 유틸리티
  • -req : 입력 파일이 CSR임을 표현
  • -in certs/mongodb_sharded.csr : 서명할 CSR 파일을 지정
  • -CA certs/ca_sharded.pem : 서명에 사용할 CA 인증서를 지정
  • -CAkey certs/ca_sharded.key : 서명에 사용할 CA 개인키를 지정
  • -CAcreateserial : CA가 사용할 일련번호 파일을 생성(최초 실행 시 필요)
  • -out certs/mongodb_sharded.cr t: 생성될 MongoDB 인증서 파일의 경로와 이름
  • -extfile san_replica_shard.cnf -extensions v3_req : 서명할 때 san_replica_shard.cnf에 정의된 SAN 확장을 포함하도록 다시 한번 지정

6. 개인키와 인증서 결합 (mongodb_sharded.pem)
# cat mongodb_sharded.key mongodb_sharded.crt > mongodb_sharded.pem

MongoDB는 하나의 파일에 개인키와 인증서가 모두 포함된 .pem 형식을 certificateKeyFile로 사용



작업 후 생성되는 파일들

  • ca_sharded.key : CA 개인 키
  • ca_sharded.pem : CA 인증서 - MongoDB의 CAFile 설정에 사용
  • ca_sharded.srl : CA 일련번호 파일 - OpenSSL이 관리
  • mongodb_sharded.key : MongoDB 서버/클라이언트 개인 키
  • mongodb_sharded.csr : MongoDB 서버/클라이언트 CSR
  • mongodb_sharded.crt : MongoDB 서버/클라이언트 인증서
  • mongodb_sharded.pem : MongoDB의 certificateKeyFile 설정에 사용

0개의 댓글