MongoDB 配置SSL

https://docs.mongodb.com/manual/core/security-transport-encryption/

关于MongoDB 的SSL 配置, 官方文档挺齐全的

win10 64位 安装 OpenSSL-Win64 的安装版, 添加环境变量path

由于文档提供的基本是Linux 的, 网上搜索到的也是Linux 这样的, 自己改成了 windows 的

G:
cd G:\ca

openssl req -newkey rsa:2048 -new -x509 -days 365 -nodes -out mongodb-cert.crt -keyout mongodb-cert.key

copy /b /y mongodb-cert.key+mongodb-cert.crt  mongodb.pem

这个是直接使用了CA根证书, 和由key+证书组成的CA服务器证书(mongodb 要求key+cert 合成的pem)

配置文件

net:
  port: 27000
  bindIp: 127.0.0.1
  ssl:
    mode: requireSSL
    PEMKeyFile: G:\ca\mongodb.pem
    CAFile: G:\ca\mongodb-cert.crt
    allowInvalidHostnames: true

如果有集群, 加上

security:
  authorization: enabled 
  clusterAuthMode: x509

启动MongoDB 后, 用mongo 客户端连接, 因为是自己建的证书, 所以--sslAllowInvalidCertificates 是必要的

mongo localhost:27000 --ssl --sslPEMKeyFile "G:\ca\mongodb.pem" --sslAllowInvalidCertificates --sslAllowInvalidHostnames

CA证书文本如下, 

-----BEGIN PRIVATE KEY-----
MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCYEWg25ldKZ5Tp
...........省略
eBIOjsRGtKjZPq8DaG5KHw==
-----END PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
MIIDVDCCAjygAwIBAgIJALM8IRVGE0GmMA0GCSqGSIb3DQEBCwUAMD8xCzAJBgNV
...........省略
OPmFbgHKYak2prMTuuIDy+xga99usbRnJ7LHOJ6pEQeSHnUYgneEvQ==
-----END CERTIFICATE-----

如果CA证书是这样多了一些其余的文本, 将会报"InvalidSSLConfiguration: CryptDecodeObjectEx failed to get size of object: ASN1", 解决办法就是把所有密钥的密码去掉, 具体方法我另外的博客有写.

-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,A81673BE6BAEA8EF

L/MXfOZgse4+D4BmUaI2bGbGf998qF/ijbSm1NklqB7AG1xltyb8SAN1TSX0yZS+
56H9DKIKMuowbXyWAjlaROPrRqQlLIrz+R5PTGzUJuXuD0KmHYe8bZQtnTDEyj3s

使用MongoDB 自带的工具MongoDB Compass 的话, 你只能登陆admin 数据库中的用户, 无法切换到其他数据库, 所以如果使用SSL 的话, 那么Compass 就鸡肋了

MongoDB 配置SSL_第1张图片

 

你可能感兴趣的:(MongoDB)