当前位置: 首页 > wzjs >正文

手机版企业网站随州网站建设学习

手机版企业网站,随州网站建设学习,wordpress注册邮箱验证收不到邮件,网站制做MongoDB目前最新的版本是8.0,官网也有介绍如何配置SSL/TLS,但是写的太粗糙,好多细节不清楚,导致配置的时候,总是觉得哪里不对。后来,通过挨个翻看历史版本,终于在3.0的版本上看到了MongoDB刚开始…

        MongoDB目前最新的版本是8.0,官网也有介绍如何配置SSL/TLS,但是写的太粗糙,好多细节不清楚,导致配置的时候,总是觉得哪里不对。后来,通过挨个翻看历史版本,终于在3.0的版本上看到了MongoDB刚开始支持SSL时的配置方法,那个就写得更清楚明白一点。基于此,才总结出本文,算是一个笔记吧。


        MongoDB自3.0开始,才支持SSL。但因版本太老,所以官网文档已经不能直接打开了,需要下载到本地打开。以下是内容是根据官网进行整理的步骤,但仅针对自签名方式,如果是授权机构颁发的证书,请参考官网。因为我在这块上面没有实际经验,所以本文就不做介绍了。另外,TLS的配置和SSL差不多,主要是参数名不一样,这里也不介绍,有需要也请查看官网。

一、制作 .pem 文件

        .pem 文件是一个自签名证书 (cert.pem),由公钥和私钥组成,通常需要使用 OpenSSL 工具。以下是生成证书的详细步骤:

1. 生成私钥 (private.key)

首先,需要生成一个私钥文件,通常使用 RSA 算法。命令:

openssl genrsa -out private.key 2048

这将生成一个 2048 位的 RSA 私钥,并保存在 private.key 文件中。

2. 生成证书签名请求 (cert.csr)

使用第一步生成的私钥文件来生成证书签名请求(CSR 文件),命令:

openssl req -new -key private.key -out cert.csr

执行该命令,会要求输入如下信息:

Country Name (国家代码,例如 CN)
State or Province Name (省份)
Locality Name (城市)
Organization Name (公司名称)
Organizational Unit Name (部门)
Common Name (CN,通常为服务器的域名或 IP 地址)
Email Address (可选)

上面的内容,最重要的是 Common Name (CN),通常应为服务器的主机名(例如 mongodb.example.com)或 IP 地址(例如 192.168.0.100),这将在连接 MongoDB 时被验证。

3. 生成自签名证书 (cert.pem)

使用前面生成的私钥和 CSR 文件,生成自签名证书,命令:

openssl x509 -req -in cert.csr -signkey private.key -out cert.pem -days 365

365表示证书的有效期为365天,可以根据需要调整。如果没有错误,那么自签名的证书 cert.pem 文件就制作完成了。

4. 检查生成的证书

可以使用以下命令查看生成的证书内容,以确保它包含刚输入的信息:

openssl x509 -in cert.pem -text -noout

证书里面除了你输入的内容,也包括证书的有效期、颁发者、使用者等信息。

二、配置 MongoDB

1. 配置 MongoDB 使用自签名证书

        将 private.key 和 cert.pem 文件放置在 MongoDB 服务器的某个位置,比如/etc下。然后在 MongoDB 的配置文件(mongod.conf)中进行以下配置:

net:ssl:mode: requireSSLPEMKeyFile: /etc/cert.pemallowInvalidCertificates: false

PEMKeyFile: 指向生成的自签名证书文件。
allowInvalidCertificates: 是否允许无效的证书文件。


2. 重启 MongoDB 服务

重新启动 MongoDB 服务器以应用新的 TLS/SSL 设置:

service mongod restart

3. 用mongo命令测试SSL是否生效

mongo --ssl --sslPEMKeyFile /etc/cert.pem

使用上述命令,可能会报如下错误:

[thread1] SSL peer certificate validation failed: self signed certificate

这个错误表示,MongoDB 客户端在验证证书时,发现证书是自签名的,默认情况下会拒绝连接。在命令中加上 --sslAllowInvalidCertificates 参数,这样客户端就不会验证证书是否由受信任的证书颁发机构(CA)签名,命令如下:

mongo --ssl --sslPEMKeyFile /etc/cert.pem --sslAllowInvalidCertificates

其实,在加了--sslAllowInvalidCertificates参数这种情况下,--sslPEMKeyFile /etc/cert.pem也可以不输入。
再介绍另一个参数:--sslAllowInvalidHostnames ,这个参数则表示不验证hostname,因为自签名证书里面的cn是一个固定值,不是设置的hostname。该参数可不加,不影响连接时的认证。
总结一下就是这条命令可行:

mongo --ssl –sslAllowInvalidCertificates -u username -P password  –authenticationDatabase=admin

        除了上述方法,还可以将自签名证书加入到受信任的证书列表中,以便客户端可以正常验证,我们就放在下一章节介绍。

三、配置Java客户端

        上一节讲到,可以把自签名证书添加到系统的证书存储(如 Linux 的 /etc/ssl/certs/ 或 Windows 的受信任的根证书颁发机构),以解决连接MongoDB服务器无效的问题。

1. 引入证书,命令如下:

keytool -import -alias mongodb_cert -file /etc/cert.csr \-keystore mongodb.jks -storepass mypassword -noprompt

如果遇到创建客户端证书失败,提示keystore密码不对时,通过以下命令可以修改keystore的密码:

keytool -storepasswd -keystore /etc/mongodb.jks -storepass 旧密码 -new 新密码

也可以先查询是否已存在该证书,存在则删除,命令如下:

  if keytool -list -keystore "$TRUSTSTORE_FILE" -storepass "$KEYSTORE_PASSWORD" | grep -q "$CERT_NAME"; thenkeytool -delete -alias "$CERT_NAME" -keystore "$TRUSTSTORE_FILE" -storepass "$KEYSTORE_PASSWORD"fi

 

2. 代码中引入信任库 

import com.mongodb.MongoClient;
import com.mongodb.MongoClientURI;

public class MongoDBConnect {
    public static void main(String[] args) {
        // 设置自定义的信任库(TrustStore)
        System.setProperty("javax.net.ssl.trustStore", "/etc/cert.jks");
        System.setProperty("javax.net.ssl.trustStorePassword", "yourTrustStorePassword");

        String uri = "mongodb://<username>:<password>@<hostname>:<port>/?tls=true";

        MongoClientURI clientURI = new MongoClientURI(uri);
        MongoClient mongoClient = new MongoClient(clientURI);

        // 使用客户端连接 MongoDB
        System.out.println("Connected to the database with custom TrustStore!");
        mongoClient.close();
    }
}

四、配置集群

配置集群的时候,和前面介绍的单机是一样的,执行相同的安装命令,会自动生成证书,但是,需要保证集群中的每个节点的openssl版本一致,使用命令:

openssl version

查看版本号,如果不一致,则需要采取复制的方式,否则将导致程序无法启动。
选择某个节点来创建证书,其他节点复制该节点生成的证书。 证书涉及到2个路径:/etc/cert.pem和/mongodb.jks。

http://www.dtcms.com/wzjs/560728.html

相关文章:

  • 广西人才网官方网站罗湖区住房和建设网站
  • 进入城乡建设网站怎么竣工备案建网站专用网站
  • 网站开发培训学院简单ppt模板下载 免费完整版
  • 成都网站优化软件小程序开发教程 吾爱破解
  • 建设婚恋网站WordPress虚拟商城插件
  • 网站建设侧边栏代码手机 网站服务器
  • 做网站的图片用什么格式正规的计算机培训机构
  • 烟台怎么做网站seo成创网络
  • 购物网站国外中国纪检监察报 沈志莉
  • 网站开发发展和前景王稳庄网站建设
  • 毕设做的网站可以用模板改吗东莞市建筑设计院
  • 怎样在工商网站做遗失如何创建网站页面
  • 爱站网关键词查询网站太原论坛建站模板
  • 十大免费文案网站乌海seo
  • 权威的企业网站建设让网站排名下降
  • 地方美食网站开发意义邵阳红网站
  • 舟山公司网站制作WordPress微信支付个人
  • seo实战密码第四版成都官网seo服务
  • 网站开发技术服务协议上海做网站找哪个公司好
  • 河北做网站公司那家好南京网站制作网页
  • 织梦怎么做企业网站苍南最新发布请配合
  • 网站侧导航网站问题seo解决方案
  • 如何做网站的主页珠海模板建站定制网站
  • 富阳做网站公司工程信息网哪个好
  • 药业集团网站建设方案移动互联网开发好就业吗
  • 怎样做微信推广网站公司网站制作效果
  • 建站平台一键申请三方支付通道正规免费发布信息网站
  • 怎样在手机上做自己的网站做网站时搜索的代码是什么
  • 制作企业网站的建设单位网站设计
  • 上海网站seo手机如何创建简易网站