繁体   English   中英

Android HTTPS Server-客户端身份验证自我认证

[英]Android HTTPS Server - Client Authentication self-certificate

我使用带有自签名证书的SSLServerSocket在Java(Android)中创建了服务器,并且尝试使用wget连接到服务器:

wget https://myAndroidserver:8080 -v --ca-certificate=client.pem --no-check-certificate

但它给出以下错误:

OpenSSL: error: 14094410: SSL routines: SSL3_READ_BYTES: SSLv3 handshake failure alert

我的Java应用程序中记录了以下错误:

error: 140890C7: SSL routines: SSL3_GET_CLIENT_CERTIFICATE: peer did not return a certificate (external/openssl/ssl/s3_srvr.c: 3271 0x5926f79c: 0x00000000)

怎么解决呢?

如果我正确阅读了您的问题...。

**server**:
OpenSSL: error: 14094410: SSL routines: SSL3_READ_BYTES: SSLv3 handshake failure alert

**client**:
error: 140890C7: SSL routines: SSL3_GET_CLIENT_CERTIFICATE: peer did not return a certificate (external/openssl/ssl/s3_srvr.c: 3271 0x5926f79c: 0x00000000)

服务器上的端口8080上未运行SSL / TLS。 或其不提供证书。

您还可以将OpenSSL的s_client-state标志一起使用,以验证发送和接收的消息:

$ openssl s_client -connect encrypted.google.com:443 -state
CONNECTED(00000003)
SSL_connect:before/connect initialization
SSL_connect:SSLv2/v3 write client hello A
SSL_connect:SSLv3 read server hello A
depth=2 C = US, O = GeoTrust Inc., CN = GeoTrust Global CA
verify error:num=20:unable to get local issuer certificate
verify return:0
SSL_connect:SSLv3 read server certificate A
SSL_connect:SSLv3 read server key exchange A
SSL_connect:SSLv3 read server done A
SSL_connect:SSLv3 write client key exchange A
SSL_connect:SSLv3 write change cipher spec A
SSL_connect:SSLv3 write finished A
SSL_connect:SSLv3 flush data
SSL_connect:SSLv3 read server session ticket A
SSL_connect:SSLv3 read finished A

还有一个-debug标志,但它非常冗长且难以解码。 如果要执行调试跟踪,则最好使用Wireshark,因为它可以分解消息中的所有字段。

感谢您提供的帮助。 要解决该问题,请按照此网站上的步骤单击此处以创建密钥库以及客户端和服务器所需的所有文件,并使用bcprov-jdk16-1.45.jar创建密钥库(bks),并在客户端(wget)上使用此命令:

 wget https://myserver:port  --certificate=client.pem --no-check-certificate --private-key=client_key.pem

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM