为清楚起见,这些可能被表述为单独的问题,但它们都与同一问题有关.
SSL证书服务器名称是如何解析的?
为什么浏览器似乎使用证书的CN字段,但Java的机制似乎只关注"主题替代名称"?
是否可以使用keytool为SSL证书添加备用名称?如果没有,是使用openSSL而不是一个好的选择?
只是一点背景:我需要让主服务器使用HTTPS与多个服务器通信.显然,我们不想为每个服务器购买SSL证书(可能有很多),所以我想使用自签名证书(我一直使用keytool来生成它们).在操作系统中添加证书后,浏览器(IE和Chrome)很乐意接受该连接为可信任的.但是,即使将证书添加到Java的cacerts之后,Java仍然不会将该连接接受为受信任,并抛出以下异常:
引起:java.security.cert.CertificateException:在sun.security.util.HostnameChecker.match(HostnameChecker.java:75)的sun.security.util.HostnameChecker.matchIP(HostnameChecker.java:142)中没有主题备用名称. at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkIdentity(X509T rustManagerImpl.java:264)at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:250)at com. sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate(Clien tHandshaker.java:1185)... 14更多
我发现我可以让Java信任实现我自己的HostNameVerifier的证书,我从这里复制了:com.sun.jbi.internal.security.https.DefaultHostnameVerifier只是为了测试(顺便说一句,主机名作为参数传递给HostnameVerifier是正确的,所以我认为应该已经接受了).
我一直使用证书字段CN作为主机名(通常是IP地址).
任何人都可以告诉我,如果我做错了什么,并指出我正确的方向?
我们在两个不同的物理办公地点有两个不同的ldap提供商.
当我将笔记本电脑连接到一个位置并且我从端口'(在Websphere 6.1中)检索以导入ldap提供程序的ssl证书时,我可以在没有问题的情况下对相应的ldap进行身份验证.如果我将笔记本电脑带到另一个办公室(默认情况下使用其他ldap提供商)并且我插入笔记本电脑,我的笔记本电脑上的WAS将无法启动,因为它显示"找不到可靠的ssl证书".
如果我再次从端口'检索并重新导入证书,那么它再次起作用.
请注意,我的WAS总是尝试连接到一个ldap,它对另一个没有用.
如果我回到另一个办公室,我会得到同样的错误,直到我从该位置重新导入.ldap连接点是ldap.something.com:636,并且在具有相同FQDN的两个位置都可以ping.
但是当它被ping时,它会解析为每个办公地点的不同IP地址.为什么我会看到这种行为?
SSL Certs是否以某种方式绑定到特定的IP地址?
如果是,那么我需要为每个办公地点维护一套不同的证书,对吧?
请注意,我检查过无法调整dns服务器以将主机名解析为相同的IP地址.
有人能提供一些见解吗?
如何在公共IP地址上安装LetsEncrypt SSL?
我在域上尝试过,它运行正常.但无法在IP地址上安装它.
我想知道为什么如果我尝试使用IP地址而不是域名访问网站,我会收到证书错误.比方说,例如nslookup说google.com是173.194.43.96,所以我试图浏览https://173.194.43.96,我得到了证书错误,指出此网站出具的安全证书是为不同的网站的地址发出.为什么会这样?
我知道我们可以保护“ https://www.abcdef.com ”这样的域,并让 URL 显示为绿色,表明它是安全的。
但是否可以获得像“ https://10.111.121.240:3000 ”这样的 url 的有效 ssl 证书。如果是的话怎么办?
目前,我正在使用https://10.111.121.240:3000,但 url 中的 https 被删除并显示为不安全。所以我无法在 ios/android 模拟器/模拟器中获取数据。
我想在 android 应用程序中进行证书固定。我对理解这一点感到非常沮丧。请帮我
我拥有的:-
我没有将实施此证书的域名。我只有IP地址。我在我的项目中使用 okHttp 和改造。我在堆栈溢出中看到了许多示例来实现这一点。
但我没有得到一些东西:- 1. 如果我没有域名,是否可以将 ssl 实现为 IP 地址?2. pin字段包含什么,我没有任何私钥。我在哪里可以找到私钥(sha256/XXXXXXXXXX)?
Retrofit provideRetrofit(OkHttpClient okHttpClient, Gson gson) {
CertificatePinner certPinner = new CertificatePinner.Builder()
.add("patternField","pins")
.build();
OkHttpClient okHttpClientForPinning = new OkHttpClient.Builder()
.certificatePinner(certPinner)
.build();
OkHttpClient.Builder clientBuilder = new OkHttpClient.Builder();
try {
clientBuilder.sslSocketFactory(getSSLConfig(context).getSocketFactory());
}
catch (Exception e) {
e.printStackTrace();
}
clientBuilder.hostnameVerifier(new HostnameVerifier() {
@Override
public boolean verify(String hostname, SSLSession session) {
boolean value = true;
//TODO:Some logic to verify your host and set value
return …Run Code Online (Sandbox Code Playgroud)