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();
        }
    }
    
    
        
}
如果有什么地方不妥的地方,请指正,不胜感激。

相关文章推荐

Weblogic HTTPS SSL证书制作(自己使用openssl来制作CA证书和服务器证书,自己充当CA的角色)

一、生成CA证书 1、创建私钥 openssl genrsa -out /home/ca/ca-key.pem 1024 2、创建证书请求 openssl req -new -out /home/ca...
  • eggette
  • eggette
  • 2017年02月06日 14:10
  • 1030

配置Tomcat使用https协议(配置SSL协议)

内容概览: 如果希望 Tomcat 支持 Https,主要的工作是配置 SSL 协议   1.生成安全证书   2.配置tomcat —————————————————————————————————...

配置Tomcat使用https协议(配置SSL协议)

配置Tomcat使用https协议(配置SSL协议) 内容概览: 如果希望 Tomcat 支持 Https,主要的工作是配置 SSL 协议   1.生成安...

使用SSL/HTTPS协议来建立安全的AXIS服务传输

使用SSL/HTTPS协议来建立安全的AXIS服务传输 文章目录 1、使用JDK自带的工具创建密匙库和信任库。2、更改Tomcat的配置文件(server.xml),增加以下部署描述符...

Nginx使用ssl模块配置https

Nginx使用ssl模块配置https 场景:使服务器与客户端之间传输内容是加密的,防止中间监听泄露信息,如果不想去证书服务商那边申请证书,那么就自己给自己颁发证书,忽略掉浏览器的不信任警报即可。  ...
  • dj_325
  • dj_325
  • 2016年03月08日 16:09
  • 229

使用自签名SSL证书配置HTTPS,解决浏览器提示不安全警告

项目测试过程中需要将应用从HTTP升级到HTTPS,浏览了网上一些帖子,参考《WebLogic11g-单双向SSL配置(以Springside3为例)》一文使用openssl工具来自建CA,并对秘钥进...

使用HttpClient发送HTTPS请求以及配置Tomcat支持SSL

完整版见https://jadyer.github.io/2012/05/30/tomcat-https/
  • jadyer
  • jadyer
  • 2012年05月30日 12:57
  • 5137

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

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

CURL使用SSL证书访问HTTPS

在支付的交互过程中,安全绝对是需要考虑的重要因素之一。体现在对服务器交互数据的签名等环节,但有的时候为了能达到更高的安全级别,还需要用ssl证书,即web服务器有证书,浏览器客户端/请求端也需要安装证...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:androd中使用 https ssl
举报原因:
原因补充:

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