首页 > 其他分享 >mongo no subject alternative dns name matching

mongo no subject alternative dns name matching

时间:2024-11-22 19:32:44浏览次数:1  
标签:KeyStore mongo 证书 IP CA no 域名 加载 name

1 mongo相关的参数

--tlsAllowConnectionsWithoutCertificates               允许客户端连接而不提供证书   --tlsAllowInvalidHostnames            允许服务器证书提供不匹配的主机名   --tlsAllowInvalidCertificates         允许连接到证书无效的服务器   2 一个java对外请求究竟有多少truststore


首先,我们需要理解 CA 证书的存储和管理机制。在 JDK 中,存在多个默 认的 CA 证书库,它们分别位于不同的位置。这些位置包括:
1. 应用程序级别的证书库:位于 Java 安装目录的 `jre/lib/security/cacerts`文件中。这是 JDK 默认使用的系统级别证书库, 其中存储了大量的受信任的 CA 证书。
2. 用户级别的证书库:位于用户的个人目录下的`.keystore`文件中。这个

文件是一个二进制文件,存储了个人用户导入的或自签名的证书。
另外,我们可以通过配置`javax.net.ssl.trustStore`系统属性来指定其他的 证书库路径。例如,我们可以使用以下命令行选项来指定自定义的证书库 路径:
java -Djavax.net.ssl.trustStore=/path/to/custom/truststore
默认情况下,JDK 会在运行时加载上述证书库,并使用其中的 CA 证书进 行身份验证。如果需要,我们可以在程序中动态加载和管理这些证书库。
接下来,让我们看一下如何在 Java 中通过代码来获取和使用 CA 证书的路 径。
java import java.security.KeyStore; import java.security.cert.Certificate;
public class Main {

public static void main(String[] args) throws Exception {

获取默认的系统级别证书库

KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());

keyStore.load(null, null);

加载证书库 遍历证书库中的 CA 证书

for (String alias : keyStore.aliases()) {
Certificate cert = keyStore.getCertificate(alias);

打印证书的主题

System.out.println(cert.getSubjectDN());

}
获取用户级别的证书库

KeyStore userKeyStore = KeyStore.getInstance("JKS");

char[] password = "password".toCharArray(); 证书库密码

userKeyStore.load(new FileInputStream("/path/to/user/keystore.jks"), password);

加载证 书库 遍历证书库中的 CA 证书

for (String alias : userKeyStore.aliases()) {
Certificate cert = userKeyStore.getCertificate(alias);

打印证书的主题 System.out.println(cert.getSubjectDN());

} } }
上述代码中,我们首先使用`KeyStore.getDefaultType()`获取默认的系统 级别证书库类型。然后,使用`keyStore.load(null, null)`加载证书库。接 着,我们遍历证书库中的所有 CA 证书,并使用`cert.getSubjectDN()`获 取证书的主题,并将其打印出来。
类似地,我们也可以通过`KeyStore.getInstance("JKS")`获取用户级别的 证书库,并加载、遍历证书,以及获取主题。只需指定证书库的文件路径 和密码即可。


--------------------------------------------------------
作者:n叶子1
链接:https://wenku.baidu.com/view/882334a8b7daa58da0116c175f0e7cd1842518d6.html

 

3 https://blog.51cto.com/u_16213689/8935443

java中的KeyStore这种文件可以分为两类:KeyStore和TrustStore。KeyStore保存私钥,在加解密、签名时使用。TrustStore保存可信任的证书,用于对被访问者进行认证。所以准确的来说cacerts文件其实应该属于TrustStore

 

初始化SSLContext时会将TrustStore中的所有证书加载进来。TrustManagerFactoryImpl.getCacertsKeyStore()方法负责加载证书,首先查找JRE/lib/security/cacerts文件。如果都不存在,则使用空的TrustStore,这样的话不会有服务器的CA证书被校验通过。

 

初始化后,客户端会与服务器端建立连接,然后进入Handshake过程,当拿到服务器端的CA证书时,会调用X509TrustManager. checkServerTrusted(…)方法,

a).校验域名/IP

校验访问地址中的域名/IP(要么域名,要么IP)是否与服务器证书包含的一致,使用到HostnameChecker. match方法进行。

如果访问使用的是域名,但服务器CA证书中没有包含域名,则抛出错误:
No subject alternative DNS name matching localhost found //其中localhost表示域名。

如果访问使用的是IP,但服务器CA证书中没有IP,则抛出错误:
No subject alternative names present

如果域名不匹配抛出错误:
No name matching localhost found //其中localhost表示域名。

如果IP不匹配,则抛出错误:
No subject alternative names matching IP address 127.0.0.1 found //其中127.0.0.1表示ip。

b). 服务器证书是否可信

通过加载的TrustStore证书来校验服务器的证书是否由信任的证书机构颁发,使用到方法PKIXValidator.engineValidate()。该校验过程如果失败,则抛出类似如下错误:
PKIX path building failed:
sun.security.provider.certpath.SunCertPathBuilderException:
unable to find valid certification path to requested target

HostnameVerifier和SSLSocketFactory。这两个类是实现HTTPS请求的核心,通过配置这两个类可以影响SSL层校验域名/IP和服务器证书校验的过程。可以通过HttpsURLConnection.SetDefaultSSLSocketFactory和HttpsURLConnection.SetDefaultHostnameVerifier来设置

 

 

标签:KeyStore,mongo,证书,IP,CA,no,域名,加载,name
From: https://www.cnblogs.com/silyvin/p/18563559

相关文章

  • NOIP 模拟赛:2024-11-21
    T1:题意:至少交换几次相邻字符,使得原串变成相邻串。结论:每种字符必然前一半在前面,后一半在后面。把最终的每个字符所到的位置求出来,用BIT求逆序对即可。T2:原题总之就是观察到\(1,2\)分出的两段必须递减,然后加个调和级数优化DP就行了。T3:多彩路径题目描述给定一个\(n......
  • NOIP 模拟赛 #16
    Alink设\(f[i,j,x,y,w]\)表示走到了\((i,j)\)且之前已经买了\(x\)张向下走的票和\(y\)张向右走的票,总花费为\(w\)的方案数。大力dp即可。Blink注意\(\prodx=\minx\)的限制比较严格,很容易想到\(\minx=0\),发现除此之外只有一种可能:\(\{1,1\}\)。......
  • Node.js小科普和Node.js安装常见管理工具
    Node.js是一个JavaScript的运行环境,用来执行JavaScript代码。为什么会出现这么一个运行环境呢,从JavaScript研发初衷可以看出它是为了运行在浏览器中的,让网页交互更加便捷。但是随着JavaScript影响力不断壮大,它的使用范围已经发生了变化。2009年,Node.js发布,初代版本支持基本的网络......
  • [73] (NOIP集训) NOIP2024 加赛 7
    DZ:你逆元过了?DZ:我去,那造数据的比较牛DZ:出题人精心构造的坑,造数据的一下就给弄没了这场真像NOIP难度吗,感觉还不如CSPflowchartTB A(镜的绮想) styleAcolor:#ffffff,fill:#00c0c0,stroke:#ffffff两个点能对称当且仅当横坐标相等\(nm\)枚举所有点,横坐标相等的记录......
  • NOIP 模拟赛:2024-11-19
    T1:对两个字符串\(a,b\),分别选择\(a\)的一个前缀和\(b\)的一个后缀(均允许为空或等于原串),并拼接形成一个新的字符串。求共有多少种可能得到的本质不同的拼接串。结论题。对于一个\(a\)的前缀\(a[1\simi]\),有\(m+1-cntb[a[i]]\)个新的串。证明:T2:对一个\(n\)个点\(m\)条......
  • node.js毕设山西寿阳县特产订购平台程序+论文
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容一、选题背景随着互联网的发展,特产订购平台在各地逐渐兴起。关于特产订购平台的研究,现有研究多以经济发达地区或旅游热门地区为主,专门针对山西寿阳县特产订购平台的......
  • node.js毕设商场会员停车场管理系统的实现程序+论文
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容选题背景在国内外,停车场管理系统的研究多侧重于普通停车场的管理优化,如提高车位利用率、改善停车流程等方面的研究。而针对商场会员停车场这一特定场景的管理系统研......
  • ansible 中 hostvars, groups, group_names, inventory_hostname 等变量
    本:ansible2.7无论您是否定义了任何变量,您都可以使用Ansible提供的特殊变量(包括“magic”变量、事实和连接变量)访问有关主机的信息。magic变量名是保留的,不要用这些名称设置变量。最常用的magic变量是hostvars、groups、group_names和inventory_hostname。1、hostvars:获取某台指......
  • NOIP 集训
    11.21第一天。不是我这位置上怎么这么多人类碎屑啊啊啊开局模拟赛(A层25):T1感觉有点可做,遂开始暴力乱搞,大概思路是想出来了,就是每次找\(x\)和\(y\)时把S和T都扫一遍。刚刚弄了pbds想用hash_table结果发现key_type不能是pii,遂脑力......
  • nodejs获取ts媒体文件的时间长度
    nodejs获取ts媒体文件的时间长度在Node.js中,你可以使用ffprobe,这是FFmpeg套件中的一个工具,来获取TS媒体文件的时长。首先,确保你已经安装了FFmpeg,然后可以通过Node.js的child_process模块运行ffprobe命令。以下是一个简单的Node.js脚本示例,它使用child_process执行ffprobe......