㈠ android下的SSL证书信任问题怎么解决
1、创建MySSLSocketFactory对象 :Throw Excetion
CertificateFactory cf = CertificateFactory.getInstance("X.509");
InputStream inStream = context.getAssets().open("信用证书");
Certificate ca;
try {
ca = cf.generateCertificate(inStream);
} finally {
inStream.close();
}
KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
keyStore.load(null, null);
keyStore.setCertificateEntry("ca", ca);MySSLSocketFactory sslFactory = new MySSLSocketFactory(keyStore)
2、将MySSLSocketFactory传入 http通信 , 这里以 HttpAsyncTask 作为http通信框架:
AsyncHttpClient client = newAsyncHttpClient();
client.setSSLSocketFactory(sslFactory);
client.get(urlString, params, new AsyncHttpResponseHandler() {
// TODO: 2017/1/5
}
㈡ android应用程序中包含的哪些文件不会被证书校验完整性
生成CA私钥文件ca.key:opensslgenrsa-outca.key1024生成X.509证书签名请求文件ca.csr:opensslreq-new-keyca_private.key-outca.csr在生成ca.csr的过程中,会让输入一些组织信息等。生成X.509格式的CA根证书ca_public.crt(公钥证书):opensslx509-req-inca.csr-signkeyca_private.key-outca_public.crt
㈢ 如何对android的apk签名进行验证
方法/步骤
1
菜单菜单键,键入cmd命令进入命令模式。如图:
2
命令模式中,进入JDK的安装目录的Bin子目录下。(我的JDK安装在E盘,所以先进入E盘,然后再进入JDK安装目录)
3
通过keytool.exe 工具来创建keystore库.
输入以下命令:
keytool -genkeypair -alias - mydemo.keystore -keyalg RSA -validity 100
-keystore mydemo.keystore
命令说明如下:
-genkeypair :指定生成数字证实
-alias :指定生成数字证书的别名
-keyalg:指定生成数字证书的算法 这里如RSA算法
-validity:指定生成数字证书的有效期
-keystore :指定生成数字证书的存储路径。 (这里默认在keytool.exe 目录下)
回车 出现如图交互式界面 输入数字证书费密码 作者 公司等详细信息
如图 :
4
完成后,keystore库创建完成,你可以在指定的保存目录下找到 如图:
5
使用jarsigner命令对未签名的APK安装包进行签名。使用JDK安装目录下bin子目录下的jarsigner.exe工具来进行签名。
然后把未签名的apk也拷贝到此目录。如图:
6
使用如下命令进行签名:
jarsigner -verbose -keystore mydemo.keystore -signedjar
-Note.apk Notes.apk mydemo.keystore
以上命令的说明:
-verbose:指定生成详细输出
-keystore:指定数字证书存储路径
-signedjar:该选项的三个参数为 签名后的apk包 未签名的apk包 数字证书别名
注意有效期哦。
7
签名后的apk 如图:
8
sdk目录下tool目录下使用zipalign.exe工具优化APK安装包。
将已经签名的apk包放在zipalign.exe同目录下 如图:
9
使用如下命令:
zipalign -f -v 4 -Note.apk -Notes.apk
命令说明:
-f :指定强制覆盖已有文件
-v 指定生成详细输出
4:指定档案整理基于的字节数 一般是4 也有基于32位的。
-Note.apk :优化前APK
-Notes.apk 优化后的APK
10
运行命令后,在该目录下生成一个-Notes.apk,这个就是优化过的APK安装包
,该安装包可以对外发布。
如图:
如果能对你有帮助,希望你能收藏和支持。
http://jingyan..com/article/3c48dd3491d91fe10be358f4.html
㈣ android https验证怎样携带证书
1、生成SSL证书请求文件CSR
2、到CA机构申请SSL证书,如沃通CA等
3、在android平台部署SSL证书
4、实现https加密访问验证
㈤ android是否有提供现成的验证证书的api
让他天然居民提供如附件内容同
㈥ 安卓应用怎么跳过https证书验证
无法跳过的,目前除了安卓,苹果也是同样,必须HTTPS加密要求。
除非了要实现HTTPS,必须达到ATS安全,SSL证书获取:网页链接
㈦ 如何使用android auth授权验证
使用android auth授权验证:
public String Get(String netUrl,String usr,String psw){
URL url = new URL(netUrl);
UsernamePasswordCredentials upc = new UsernamePasswordCredentials(usr,psw); //这一句使用用户名密码建立了一个数据
AuthScope as = new AuthScope(null,-1);
BasicCredentialsProvider bcp = new BasicCredentialsProvider(); //下面这一段我是抄的=。=
bcp.setCredentials(as, upc);
DefaultHttpClient dhc= new DefaultHttpClient();
dhc.setCredentialsProvider(bcp); //给client设置了一个验证身份的部分
/*-------------------------分割线---------------------------------*/
HttpGet hg= new HttpGet(netUrl);
HttpResponse hr=null;
hr = dhc.execute(hg);
String line=null;
StringBuilder builder = new StringBuilder();
BufferedReader reader=null;
reader = new BufferedReader(new InputStreamReader(hr.getEntity().getContent() )); //获取数据
while((line = reader.readLine()) != null) builder.append(line);
String strContent=builder.toString();
reader.close();
Log.d("info", strContent);
return strContent;
}
如果你想要做一个客户端的话,登录是必不可少的。安卓内置了OAUTH的登录组件,可以在很方便的情况下将这个内容加入GET和POST的信头中,完成验证的功能。
下面直接进入正题:我要给论坛做一个客户端,论坛使用的是OAUTH的验证系统。这就要使用到一个 UsernamePasswordCredentials 和 AuthScope 和 BasicCredentialsProvider类,具体大家可以查阅,我偷懒直接在下面放代码啦!
那么分割线上面的部分就是加入OAUTH验证的主体部分,道理我可能还讲不清楚,但是这个代码拿起来就可以直接用,大家可以试试。
㈧ android 手机使用webview 白屏 ssl 不验证证书会有什么后果
webview.setWebViewClient(new WebViewClient() {
@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
if (error.getPrimaryError() == SslError.SSL_DATE_INVALID // 日期不正确
|| error.getPrimaryError() == SslError.SSL_EXPIRED // 日期不正确
|| error.getPrimaryError() == SslError.SSL_INVALID // webview BUG
|| error.getPrimaryError() == SslError.SSL_UNTRUSTED) { // 根证书丢失
if (chkMySSLCNCert(error.getCertificate())) {
handler.proceed(); // 如果证书一致,忽略错误
}
}
}
private boolean chkMySSLCNCert(SslCertificate cert) {
byte[] MySSLCNSHA256 = { 35, 76, 110, -121, -68, -104, -12, 84, 39, 119, -55,
101, 95, -8, -90, 9, 36, -108, 5, -57, 76, -98, -19, -73, 91, -37, 18,
64, 32, -41, 0, 109 }; //证书指纹
Bundle bundle = SslCertificate.saveState(cert);
byte[] bytes = bundle.getByteArray("x509-certificate");
if (bytes != null) {
try {
CertificateFactory cf = CertificateFactory.getInstance("X.509");
Certificate ca = cf.generateCertificate(new ByteArrayInputSteam(bytes));
MessageDigest sha256 = MessageDigest.getInstance("SHA-256");
byte[] Key = sha256.digest(((X509Certificate) ca).getEncoded());
return Arrays.equals(key, MySSLCNSHA256);
} catch (Exception Ex) {}
}
return false;
}
}