androd中使用 https ssl

原创 2012年03月28日 14:11:31

android平台上支持的keystore type好像只有PKCS12,不支持JKS。

使用https的前提是,服务器必须首先配置好ssl,配置安全连接各种服务器都有说明文档,在此不多说了、


还必须把服务器证书导出来,通过浏览器就可以导出来,此处导出的证书文件为: my.cer

可以把证书放在asset文件夹下,或者放到raw文件加下,以流的形式读出来。


下面是在android上的代码,经过测试,没有任何问题

public class HttpsActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        try {
        	
			https();
			
		} catch (KeyManagementException e) {
			Log.e("https", e.getMessage());
		} catch (ClientProtocolException e) {
			Log.e("https", e.getMessage());
		} catch (KeyStoreException e) {
			Log.e("https", e.getMessage());
		} catch (NoSuchAlgorithmException e) {
			Log.e("https", e.getMessage());
		} catch (CertificateException e) {
			Log.e("https", e.getMessage());
		} catch (UnrecoverableKeyException e) {
			Log.e("https", e.getMessage());
		} catch (IOException e) {
			Log.e("https", e.getMessage());
		}
    }
    public void https() throws ClientProtocolException, IOException, KeyStoreException, NoSuchAlgorithmException, CertificateException, KeyManagementException, UnrecoverableKeyException{
    	DefaultHttpClient httpclient = new DefaultHttpClient();
        try {
            KeyStore trustStore  = KeyStore.getInstance("PKCS12");
            InputStream instream = getResources().openRawResource(R.raw.my); 
            CertificateFactory cerFactory = CertificateFactory.getInstance("X.509");  
            java.security.cert.Certificate cer = cerFactory.generateCertificate(instream);
            try {
            	trustStore.load(null, null);
            	trustStore.setCertificateEntry("trust", cer);
            } finally {
                try { instream.close(); } catch (Exception ignore) {}
            }
            
            SSLSocketFactory socketFactory = new SSLSocketFactory(trustStore);
            Scheme https = new Scheme("https", socketFactory, 8443);
            httpclient.getConnectionManager().getSchemeRegistry().register(https);

            HttpGet httpget = new HttpGet("https://服务器IP:8443/httpsServer/httpstest?username=mmmm&password=pppp");

            System.out.println("executing request" + httpget.getRequestLine());
            Log.i("https", "executing request" + httpget.getRequestLine());
            HttpResponse response = httpclient.execute(httpget);
            HttpEntity entity = response.getEntity();
            Log.i("https", "----------------------------------------");
            System.out.println(response.getStatusLine());
            if (entity != null) {
                Log.i("https", "Response content length: " + entity.getContentLength());
            }

        } finally {
            // When HttpClient instance is no longer needed,
            // shut down the connection manager to ensure
            // immediate deallocation of all system resources
            httpclient.getConnectionManager().shutdown();
        }
    }
    
    
        
}
如果有什么地方不妥的地方,请指正,不胜感激。

嵌入式 建立ssl连接过程分析一

Https协议:SSL建立过程分析 web访问的两种方式: http协议,我们一般情况下是通过它访问web,因为它不要求太多的安全机制,使用起来也简单,很多web站点也只支持这种方式下的访问. ...
  • skdkjxy
  • skdkjxy
  • 2013年12月02日 14:46
  • 1322

SSL证书与Https应用部署小结

为了提高网站的安全性,一般会在比较敏感的部分页面采用https传输,比如注册、登录、控制台等。像Gmail、网银等全部采用https传输。 https/ssl 主要起到两个作用:网站认证、内容加...
  • andy1219111
  • andy1219111
  • 2014年04月01日 10:03
  • 27783

java使用Apache HttpClient发送https请求创建SSL连接方法实现

https, SSL, httpClient, java
  • Emiracle7
  • Emiracle7
  • 2017年02月09日 11:37
  • 603

Springboot配置使用ssl,使用https

SSL(Secure Sockets Layer 安全套接层)是为网络通信提供安全及数据完整性的一种安全协议,SSL在网络传输层对网络连接进行加密,SSL协议位于TCP/IP协议与各种应用层协议之间,...
  • shouldnotappearcalm
  • shouldnotappearcalm
  • 2017年09月21日 00:02
  • 717

https知识了解与javaweb中如何使用https

1)      https是什么? https是一种协议,在说https之前我们先说一下什么是http,http就是我们平时浏览网页时使用的一种协议,https协议传输的数据都是未加密的,也就是明文的...
  • ZhangZuoMian
  • ZhangZuoMian
  • 2015年12月16日 10:27
  • 11360

HTTP、HTTPS、SSL、证书的关系

参考文档: https://developer.android.com/training/articles/security-ssl.html?hl=zh-cn https://github.co...
  • lintcgirl
  • lintcgirl
  • 2016年07月29日 17:18
  • 1972

Android中使用https(HTTP+SSL)访问服务器

之前做网络请求一直都是用Http请求来和服务器交互,一直听说过Https不过一直没用过,所以今天决定好好研究一下,一把鼻涕一把泪啊,结果发现……….哎,不说了,说多了都是泪;这里记录一下android...
  • leifengpeng
  • leifengpeng
  • 2015年05月15日 17:37
  • 2483

HTTPS的压力测试工具 -- httperf

httperf 1. 官方描述: Httperf is a tool for measuring web server performance. It provides a f...
  • yangruibao
  • yangruibao
  • 2014年06月05日 17:46
  • 6560

Oracle EBS R12启用HTTPS安全链接(SSL)

E-Business Suite R12.1.1 provides Advanced Configuration wizards that make it easier to deploy featu...
  • sunansheng
  • sunansheng
  • 2015年05月19日 19:35
  • 3209

SSL 中证书是否可以使用IP而不是域名

以前听别人说生成证书时可以用IP地址,今天用例子证实了下用IP地址是不行的。...
  • liu251890347
  • liu251890347
  • 2014年07月14日 09:58
  • 9410
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:androd中使用 https ssl
举报原因:
原因补充:

(最多只允许输入30个字)