Android 以编程方式从Url获取证书信息
是否可以从Android 以编程方式从Url获取证书信息,android,ios,ssl-certificate,x509certificate,Android,Ios,Ssl Certificate,X509certificate,是否可以从Url获取证书信息?在iOS中,它有nsurauthenticationchallenge,如果url包含https,它会给出信息 同样,我们是否可以通过代码获取特定url的证书信息?是的,可能: 步骤1:在broswer中输入url,点击2选项卡,如下所示: 步骤2:打开详细信息选项卡 步骤3:从那里导出公钥 步骤4:获取.cert文件 步骤5:从.cert文件生成密钥库,并将其放在android中{ X509TrustManager trustManager = new X50
Url
获取证书信息?在iOS中,它有nsurauthenticationchallenge
,如果url
包含https
,它会给出信息
同样,我们是否可以通过代码获取特定url
的证书信息?是的,可能:
步骤1:在broswer中输入url,点击2选项卡,如下所示:
步骤2:打开详细信息选项卡
步骤3:从那里导出公钥
步骤4:获取.cert文件
步骤5:从.cert文件生成密钥库,并将其放在android中{
X509TrustManager trustManager = new X509TrustManager() {
@Override
public void checkClientTrusted(X509Certificate[] chain,
String authType) throws CertificateException {
for (TrustManager tm : managers) {
if (tm instanceof X509TrustManager) {
((X509TrustManager) tm).checkClientTrusted(
chain, authType);
}
}
}
@Override
public void checkServerTrusted(X509Certificate[] chain,
String authType) throws CertificateException {
for (X509Certificate cert : chain) {
// cert gives the server Certificate Information.
if (cert.getIssuerX500Principal().equals(
trustedRoot.getIssuerX500Principal())) {
return;
}
}
for (TrustManager tm : managers) {
if (tm instanceof X509TrustManager) {
((X509TrustManager) tm).checkServerTrusted(
chain, authType);
}
}
}
@Override
public X509Certificate[] getAcceptedIssuers() {
ArrayList<X509Certificate> issuers = new ArrayList<>();
for (TrustManager tm : managers) {
if (tm instanceof X509TrustManager) {
issuers.addAll(Arrays
.asList(((X509TrustManager) tm)
.getAcceptedIssuers()));
}
}
return issuers.toArray(new X509Certificate[issuers
.size()]);
}
};
@凌驾
public void checkClientTrusted(X509Certificate[]链,
字符串authType)引发CertificateException{
适用于(TrustManager tm:管理者){
if(X509TrustManager的tm实例){
((X509TrustManager)tm).checkClientTrusted(
链,authType);
}
}
}
@凌驾
公共无效checkServerTrusted(X509Certificate[]链,
字符串authType)引发CertificateException{
对于(X509证书证书:链){
//cert提供服务器证书信息。
如果(证书getIssuerX500Principal()等于(
trustedRoot.getIssuerX500Principal()){
返回;
}
}
适用于(TrustManager tm:管理者){
if(X509TrustManager的tm实例){
((X509TrustManager)tm).checkServerTrusted(
链,authType);
}
}
}
@凌驾
公共X509证书[]getAcceptedIssuers(){
ArrayList发行人=新ArrayList();
适用于(TrustManager tm:管理者){
if(X509TrustManager的tm实例){
issuers.addAll(数组)
.asList(((X509TrustManager)tm)
.getAcceptedIssuers());
}
}
返回发卡机构。toArray(新X509证书[发卡机构
.size());
}
};
检查此
//证书提供服务器证书信息。
在上述代码中。谢谢您的回答。但是,我需要它通过代码。我们能通过密码得到这个吗@N5.Atlates您需要手动获取密钥库文件,然后您可以在android中使用该文件进行ssl连接,是的,您可以连接到https,但需要密钥库出现在手动生成的代码中Url,我需要检查它也是动态的。它不是静止的。。我怎么知道用户将只使用此url。我可以动态获取密钥库文件吗@不确定,这是我可以实际执行的方法。