相关疑难解决方法(0)

使用HttpClient通过HTTPS信任所有证书

最近发布了一个关于HttpClient过度Https 的问题(在这里找到).我已经取得了一些进展,但我遇到了新的问题.和我的上一个问题一样,我似乎无法找到适合我的任何地方的例子.基本上,我希望我的客户端接受任何证书(因为我只指向一个服务器),但我一直在接受javax.net.ssl.SSLException: Not trusted server certificate exception.

所以这就是我所拥有的:


    public void connect() throws A_WHOLE_BUNCH_OF_EXCEPTIONS {

        HttpPost post = new HttpPost(new URI(PROD_URL));
        post.setEntity(new StringEntity(BODY));

        KeyStore trusted = KeyStore.getInstance("BKS");
        trusted.load(null, "".toCharArray());
        SSLSocketFactory sslf = new SSLSocketFactory(trusted);
        sslf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);

        SchemeRegistry schemeRegistry = new SchemeRegistry();
        schemeRegistry.register(new Scheme ("https", sslf, 443));
        SingleClientConnManager cm = new SingleClientConnManager(post.getParams(),
                schemeRegistry);

        HttpClient client = new DefaultHttpClient(cm, post.getParams());
        HttpResponse result = client.execute(post);
    }
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误:

    W/System.err(  901): javax.net.ssl.SSLException: Not trusted server certificate 
    W/System.err(  901):    at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:360) 
    W/System.err(  901): …
Run Code Online (Sandbox Code Playgroud)

java ssl https certificate apache-httpclient-4.x

386
推荐指数
9
解决办法
57万
查看次数

如何从Android进行HTTPS POST?

我想做一个HTTPS post方法,从我的Android应用程序发送一些数据到我的网站.

HttpURLConnection先使用它,我的HTTP URL工作正常.我的生产网站是使用HTTPS的,我希望使用相同的POST发送HttpsURLConnection.有人可以帮我正确使用课程吗?

我在这个链接找到了一些来源:

KeyStore keyStore = ...;    
TrustManagerFactory tmf = TrustManagerFactory.getInstance("X509");    
tmf.init(keyStore);

SSLContext context = SSLContext.getInstance("TLS");   
context.init(null, tmf.getTrustManagers(), null);

URL url = new URL("https://www.example.com/");   
HttpsURLConnection urlConnection = (HttpsURLConnection)
url.openConnection();   
urlConnection.setSSLSocketFactory(context.getSocketFactory());   
InputStream in = urlConnection.getInputStream();
Run Code Online (Sandbox Code Playgroud)

应该是什么价值 KeyStore keyStore = ...;

我尝试使用相同的方式发送数据 HttpURLConnection,但我看到一些POST数据丢失或出错.

我试过这个问题的方法.我在下面粘贴我的代码

String urlParameters="dateTime=" + URLEncoder.encode(dateTime,"UTF-8")+
    "&mobileNum="+URLEncoder.encode(mobileNum,"UTF-8");

URL url = new URL(myurl);
HttpsURLConnection conn;
conn=(HttpsURLConnection)url.openConnection();

// Create the SSL connection
SSLContext sc;
sc = SSLContext.getInstance("TLS");
sc.init(null, null, new …
Run Code Online (Sandbox Code Playgroud)

java ssl https android httpsurlconnection

15
推荐指数
2
解决办法
5万
查看次数

Android L - 没有对等证书

我开发了一个小应用程序,使用带有自签名证书的SSL连接到我的服务器.为了使它工作,我使用BouncyCastleProvider将我的证书加载到自定义密钥库中,并在我的自定义SSLSocketFactory中导入证书.Everythink在android 2.3(最小sdk)到4.4.4之间运行良好.但在android L(预览版)中,我的应用失败了:

Tue Aug 12 14:34:40 BRT 2014:javax.net.ssl.SSLPeerUnverifiedException:org.apache.http.conn上的com.android.org.conscrypt.SSLNullSession.getPeerCertificates(SSLNullSession.java:104)没有对等证书.位于org.apache.http.conn.ssl.SSLSocketFactory.createSocket(SSLSocketFactory.java:388)的ssl.AbstractVerifier.verify(AbstractVerifier.java:93)org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator. java:165)org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)atg.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)org.apache位于org.apache.http.impl.client.AbstractHttpClient的org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)中的.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360) .execute(AbstractHttpClient.java:487)在org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)....

我完全不知道如何解决它.任何帮助将非常感激.

ssl android certificate android-5.0-lollipop

7
推荐指数
1
解决办法
6759
查看次数