gpt4 book ai didi

android - 使用自签名 SSL 证书时出现 SSLPeerUnverifiedException

转载 作者:太空宇宙 更新时间:2023-11-03 14:05:10 26 4
gpt4 key购买 nike

我已经创建了一个自签名的 SSL 证书用于测试目的。当我从浏览器打开 https://localhost 时它工作正常,现在我正在关注 this在 Android 中添加我自己的 TrustManager 的指南。

当我尝试使用我机器的 IP 地址 连接到服务器时,它会抛出

javax.net.ssl.SSLPeerUnverifiedException: Hostname 192.168.10.3 not verified:

虽然我能够使用 HostnameVerifier 解决它

HostnameVerifier hostnameVerifier = new HostnameVerifier() {
@Override
public boolean verify(String hostname, SSLSession session) {
HostnameVerifier hv = HttpsURLConnection.getDefaultHostnameVerifier();
return hostname.trim().equals("192.168.10.3") || hv.verify(hostname, session);
}
};

但我仍然想知道我在这里遗漏了什么? 我是否仍在使用自定义 HostnameVerifier 正确配置它?这是我的输出证书

I/System.out: ca=C=PK, L=Islamabad, O=Self, OID.1.2.840.113549.1.9.1=#16176D616C6C617564696E71617A6940676D61696C2E636F6D, CN=https://192.168.10.3

我正在使用以下命令运行 openssl 服务器

openssl s_server -key rsa.key -cert allaudin.pem -accept 4000 -WWW

最佳答案

您可以使用 Alternative Names用于自签名 SSL 证书文件中的 IP 地址。

我在 github 上写了一个 bash 文件要在替代名称中生成自签名证书,您可以复制 openssl.cnf并自定义您的 openssl 配置。如果想使用现有的私钥,bash 文件应该是这样的:

#!/bin/bash
KEY_FILE="server.key"
#######################################################
## Remove all generated files ##
#######################################################

rm -f server.crt keystore.p12 keystore.jks

#######################################################
## generate x509 certificate ##
#######################################################

openssl req -new -x509 -key $KEY_FILE -sha256 -out server.crt -days 730 -config openssl.cnf
openssl x509 -in server.crt -text -noout

#######################################################
## adding self-signed certificate into jks key store ##
#######################################################

PASSWORD="password"
openssl pkcs12 -export -name test -in server.crt -inkey $KEY_FILE -out keystore.p12 -password "pass:$PASSWORD"
keytool -importkeystore -destkeystore keystore.jks -srckeystore keystore.p12 -srcstorepass $PASSWORD -srcstoretype pkcs12 -alias test -storepass $PASSWORD

#######################################################
## Remove pkcs12 keystore ##
#######################################################
rm -f keystore.p12

使用 openssl x509 -in **.crt -text -noout 查看自签名证书文件中是否有替代名称。 server.crt 中的替代名称是:

X509v3 Subject Alternative Name:
IP Address:127.0.0.1

AND 有一个 TestCase根据 Android unknown certificate authority已经用java8&junit5写了,如果想在Android中测试需要做一些改造。

关于android - 使用自签名 SSL 证书时出现 SSLPeerUnverifiedException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43441197/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com