你们这些凡人 發表於 2021-10-12 19:08:00

mongodb 设置 ssl

<p># mongodb ssl详细配置</p>
<p>准备:确保openssl可用;</p>
<p>1. #### 生成根证书</p>
<p> ```<br>   openssl req -out ca.pem -new -x509 -days 3650 -subj "/C=CN/ST=BeiJing/O=bigdata/CN=root/emailAddress=156*******9@163.com"<br>   <br>   <br>   #生成需要设置密码<br>   参数说明<br>   -new:表示生成一个新证书签署请求<br>   -x509:专用于CA生成自签证书,如果不是自签证书则不需要此项<br>   -out:证书的保存路径<br>   -days:证书的有效期限,单位是day(天),默认是365天<br>   ```</p>
<p>2. #### 生成服务端pem文件</p>
<p>   1. 使用rsa加密算法生成一个服务端私钥文件</p>
<p>      ```<br>      openssl genrsa -out server.key 2048<br>      参数说明<br>      genrsa —— 使用RSA算法产生私钥<br>      out——输出文件的路径<br>      2048——指定私钥长度<br>      ```</p>
<p>   2. 根据密钥文件生成一个证书申请文件(req)</p>
<p>      ```<br>      openssl req -key server.key -new -out server.req -subj "/C=CN/ST=BeiJing/O=bigdata/CN=server1/CN=localhost/emailAddress=15617165229@163.com"<br>      <br>      参数说明<br>      req——执行证书签发命令<br>      -new——新证书签发请求<br>      -key——指定私钥路径<br>      -out——输出的csr文件的路径<br>      -subj——证书相关的用户信息(subject的缩写)<br>      ```</p>
<p>   3. 根据证书申请文件生成CA的服务器端证书文件</p>
<p>      ```<br>      openssl x509 -req -in server.req -CA ca.pem -CAkey privkey.pem -out server.crt -days 3650<br>      <br>      参数说明<br>      -CA——指定CA证书的路径<br>      -CAkey——指定CA证书的私钥路径<br>      -CAcreateserial——表示创建证书序列号文件,创建的序列号文件默认名称为-CA,指定的证书名称后加上.srl后缀<br>      #加上 -CAcreateserial file.srl 老报错,所以去掉了<br>      ```</p>
<p>   4. 合并证书和私钥组成pem文件</p>
<p>      ```<br>      cat server.key server.crt &gt; server.pem<br>      ```</p>
<p>   5. 验证服务器端证书,此处可能需要输入密码</p>
<p>      ```<br>      Openssl verify -CAfile ca.pem server.pem<br>      <br>      输出ok即可<br>      ```</p>
<p>3. #### 生成客户端pem文件</p>
<p>   1. 使用RSA加密算法生成一个客户端私钥文件</p>
<p>      ```<br>      openssl genrsa -out client.key 2048<br>      ```</p>
<p>   2. 根据密钥文件生成一个证书申请文件(req)</p>
<p>      ```<br>      openssl req -key client.key -new -out client.req -subj "/C=CN/ST=BeiJing/O=bigdata/CN=client1/emailAddress=15617165229@163.com"<br>      ```</p>
<p>   3. 根据证书申请文件生成CA的客户端证书文件:</p>
<p>      ```<br>      openssl x509 -req -in client.req -CA ca.pem -CAkey privkey.pem -out client.crt -days 3650<br>      ```</p>
<p>   4. 合并证书及私钥文件成PEM文件</p>
<p>      ```<br>      cat client.key client.crt &gt; client.pem<br>      ```</p>
<p>   5. 验证客户端证书</p>
<p>      ```<br>      openssl verify -CAfile ca.pem client.pem<br>      <br>      输出ok即可<br>      ```</p>
<p>      截止,完成了证书的创建过程</p>
<p>4. #### 配置mongodb的ssl支持</p>
<p>   1. 首先需要对mongodb服务器进行设置,这些设置可以在调用mongod启动mongodb服务器时,通过命令行参数进行指定,也可以通过配置文件进行指定,配置文件的默认位置是/usr/local/etc/目录下的mongod.conf。配置内容如下:</p>
<p>      ```<br>      net:<br>      bindIp: 127.0.0.1<br>      net:<br>      ssl:<br>          mode: requireSSL<br>          PEMKeyFile: /data/mongo_ssl/server.pem<br>          CAFile: /data/mongo_ssl/ca.pem<br>          allowInvalidHostnames: true<br>      ```</p>
<p>      **注意**<br>      这里PEMKeyFile和CAFile中的文件路径,一定指向我们在上面步骤中生成的文件。<br>      这时我们就可以通过如下命令,启动mongodb:</p>
<p>      ```<br>      mongod --config /usr/local/etc/mongod.conf <br>      或者<br>      systemctl start mongod<br>      ```</p>
<p>   2. 设置pem文件所在路径的 mongod 权限</p>
<p>   3. 在启动完mongodb数据库后,可以通过如下命令,使用mongo shell连接mongodb数据库:</p>
<p>      ```<br>      mongo --sslAllowInvalidCertificates --sslAllowInvalidHostnames --ssl --sslPEMKeyFile /data/mongo_ssl/client.pem --sslCAFile /data/mongo_ssl/ca.pem<br>      ```</p>
<p>      这样我们就可以通过mongo shell连接到本地的mongodb服务器上了,如下图所示:</p>
<p><img src="https://github.com/wangtianshang/blogImage/blob/main/img/image-20210919171624751.png?raw=true"></p>
<p id="1634037414565">&nbsp;</p>
<p>&nbsp;</p><br><br>
来源:https://www.cnblogs.com/wts-home/p/15399204.html
頁: [1]
查看完整版本: mongodb 设置 ssl