【问题标题】:Android HTTPS Server - Client Authentication self-certificateAndroid HTTPS 服务器 - 客户端身份验证自证书
【发布时间】:2014-02-11 10:01:10
【问题描述】:

我使用带有自签名证书的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)

如何解决?

【问题讨论】:

    标签: java android openssl wget


    【解决方案1】:

    如果我没看错你的问题......

    **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)
    

    SSL/TLS 没有在服务器的 8080 端口运行;或者它没有提供证书。

    您还可以使用 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,因为它会分解消息中的所有字段。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-06-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-28
        相关资源
        最近更新 更多