android - 如何在 android 中直接打开 SSLSocket 到我的 glassfish 默认自签名证书?

标签 android ssl glassfish

如此处解释:

http://developer.android.com/training/articles/security-ssl.html#WarningsSslSocket

在网站代码的和平中

SocketFactory sf = SSLSocketFactory.getDefault();
SSLSocket socket = (SSLSocket) sf.createSocket("gmail.com", 443);
HostnameVerifier hv = HttpsURLConnection.getDefaultHostnameVerifier();
SSLSession s = socket.getSession();

if (!hv.verify("mail.google.com", s)) {
    throw new SSLHandshakeException("Expected mail.google.com, "
                                "found " + s.getPeerPrincipal());
}

我的代码总是在 verfy 中传递 false,然后 getPeerPrincipal() 抛出错误 null

public class Teste extends AsyncTask<String, Void, String>{

@Override
protected String doInBackground(String... params) {

    try {


        SocketFactory socketFactory = SSLSocketFactory.getDefault();

        SSLSocket sslSocket = (SSLSocket) socketFactory.createSocket("192.168.13.103", 8181);

        HostnameVerifier hostnameVerifier = HttpsURLConnection.getDefaultHostnameVerifier();

        SSLSession sslSession = sslSocket.getSession();

        if (!hostnameVerifier.verify("192.168.13.103", sslSession)) {

            System.out.println(sslSession.getPeerHost());

        }

    } catch (Exception e) {

        System.out.println(e);

    }

    return null;

}

}

最佳答案

据我了解您的代码,您正在尝试连接到 Glassfish 服务器(端口 8181)的 HTTP 套接字,因此没有 SSL/TSL 响应。那么 false 就是好的答案。

关于android - 如何在 android 中直接打开 SSLSocket 到我的 glassfish 默认自签名证书?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23067928/

相关文章:

android - 他们是否根据屏幕大小设置图标/字体/等大小的任何规则

android - In App Notify 的 In App Purchase 频率

c++ - boost::asio io_service::run_one 导致段错误

mysql - EJB 中的动态实体管理器

jakarta-ee - 在 GlassFish 4.0 中部署期间修改 ejb-jar.xml 的配置属性

rest - 如何将应用程序 glassfish 移植到 tomcat?

android - 设备离线时接收所有推送通知

android - 可搜索 Activity 被调用两次

google-chrome - Localhost SSL 连接到 api ERR_SSL_PROTOCOL_ERROR

.net - Google 显示 SSL 错误消息