⑴ Android 如何查看app 的公鑰證書
一般公鑰是網銀網站的控制項在用戶機器上生成的,同時在用戶機器上生成的還有私鑰。 然後公鑰發到網銀,被作成證書,還到用戶本地由網銀控制項或微軟控制項安裝。
⑵ u盾找不到證書公鑰,急求答案!
你有盤沒,用盤把驅動重新裝下,裝的時候別插U盾,然後重啟看看,網上下的驅動有些用不了
⑶ 什麼是公鑰證書
所謂的公鑰認證,實際上是使用一對加密字元串,一個稱為公鑰(public key),任何人都可以看到其內容,用於加密;另一個稱為密鑰(private key),只有擁有者才能看到,用於解密。通過公鑰加密過的密文使用密鑰可以輕松解密,但根據公鑰來猜測密鑰卻十分困難。
ssh 的公鑰認證就是使用了這一特性。伺服器和客戶端都各自擁有自己的公鑰和密鑰。為了說明方便,以下將使用這些符號。
Ac 客戶端公鑰
Bc 客戶端密鑰
As 伺服器公鑰
Bs 伺服器密鑰
在認證之前,客戶端需要通過某種方法將公鑰 Ac 登錄到伺服器上。
認證過程分為兩個步驟。
會話密鑰(session key)生成
客戶端請求連接伺服器,伺服器將 As 發送給客戶端。
伺服器生成會話ID(session id),設為 p,發送給客戶端。
客戶端生成會話密鑰(session key),設為 q,並計算 r = p xor q。
客戶端將 r 用 As 進行加密,結果發送給伺服器。
伺服器用 Bs 進行解密,獲得 r。
伺服器進行 r xor p 的運算,獲得 q。
至此伺服器和客戶端都知道了會話密鑰q,以後的傳輸都將被 q 加密。
認證
伺服器生成隨機數 x,並用 Ac 加密後生成結果 S(x),發送給客戶端
客戶端使用 Bc 解密 S(x) 得到 x
客戶端計算 q + x 的 md5 值 n(q+x),q為上一步得到的會話密鑰
伺服器計算 q + x 的 md5 值 m(q+x)
客戶端將 n(q+x) 發送給伺服器
伺服器比較 m(q+x) 和 n(q+x),兩者相同則認證成功
⑷ 如何驗證SSL證書公鑰的正確性
只要是證書鏈條是對的,也在你機器上了,就能看見正常,出一點不對就告訴你不對了。
⑸ 密信(mesince)如何查看聯系人的加密證書和簽名證書公鑰
可以查看「抄通訊錄」中聯襲系人的證書公鑰信息,不僅可以查看簽名證書公鑰,還可以查看該聯系人的所有加密證書公鑰。為了確保收件人能解密加密郵件,密信會自動用收件人的多張加密證書公鑰發送加密郵件,確保收件人用任何一張用過的證書都能解密加密郵件。
⑹ 怎麼能讀取cer證書中的公鑰進行AES加密
怎麼能讀取cer證書中的公鑰進行AES加密
非對稱演算法中,公鑰用來加密,私鑰解密,.cer的文件內可能是公鑰,也容有可能是交叉根或root根文件,一般不同的中間件要求的證書規格都不一樣,而且現在的CA機構(如沃通)在發證書的時候,都會根據不同的中間件去打包證書文件,並且提供相對的部署指南.
cer證書由p12導出(只不過cer是二進制,p12是base64,可以網上查der(二進制)轉pem(base64)),導出命令:
keytool -export -alias p12client -keystore dlt.p12 -storetype PKCS12 -storepass 密碼 -rfc -file p12.cer
⑺ SSL中,公鑰,私鑰,證書的後綴名都是些啥
SSL證書後綴
CSR – Certificate Signing Request,即證書簽名請求,這個並不是證書,而是向權威證書頒發機構獲得簽名證書的申請,其核心內容是一個公鑰(當然還附帶了一些別的信息),在生成這個申請的時候,同時也會生成一個私鑰,私鑰要自己保管好.做過iOS APP的朋友都應該知道是怎麼向蘋果申請開發者證書的吧.
KEY– 通常用來存放一個RSA 公鑰或者私鑰,並非X.509證書,編碼同樣的,可能是PEM,也可能是DER.
CRT– CRT應該是certificate的三個字母,其實還是證書的意思,常見於*NIX系統,有可能是PEM編碼,也有可能是DER編碼,大多數應該是PEM編碼。本站提供的CRT格式等同於CER,等同於PEM。
PEM – Privacy Enhanced Mail的縮寫,以文本的方式進行存儲。打開看文本格式,以」—–BEGIN…」開頭, 「—–END…」結尾,內容是編碼. 查看PEM格式證書的信息:openssl x509 -in certificate.pem -text -noout Apache和*NIX伺服器偏向於使用這種編碼格式.
CER– 還是certificate,還是證書,常見於Windows系統,同樣的,可能是PEM編碼,也可能是DER編碼,大多數應該是DER編碼.
DER – Distinguished Encoding Rules的縮寫,以二進制方式進行存儲,文件結構無法直接預覽,查看DER格式證書的信息:openssl x509 -in certificate.der -inform der -text -noout Java和Windows伺服器偏向於使用這種編碼格式.
PFX/P12 – predecessor of PKCS#12,對*nix伺服器來說,一般CRT和KEY是分開存放在不同文件中的,但Windows的IIS則將它們存在一個PFX文件中,(因此這個文件包含了證書及私鑰)這樣會不會不安全?應該不會,PFX通常會有一個」提取密碼」,你想把裡面的東西讀取出來的話,它就要求你提供提取密碼,PFX使用的時DER編碼,如何把PFX轉換為PEM編碼?
JKS – 即Java Key Storage,這是Java的專利,跟OpenSSL關系不大,利用Java的一個叫」keytool」的工具,可以將PFX轉為JKS,當然了,keytool也能直接生成JKS。
⑻ 私鑰、公鑰、證書的區別和關系
私鑰是要求你輸入個人密碼才可訪問的,一般網上銀行之類可用到。
公鑰不要求設專置密碼,是已屬經默認了的,一般上一些安全性要求不高的網站或共享資源,如區域網。
證書是一種網站加密瀏覽方式,只有允許了才可訪問,一般為安全性較高的網站,如網上銀行;可以訪止黑客盜取客戶資料。
⑼ 怎樣驗證 證書的私鑰 公鑰 匹配
var pnCenter=new Ext.TabPanel({
id:'pnCenter',
layout: 'fit',
region:'center',
autoScroll:true,
autoDestroy:false,//不讓它銷毀
heigth:'auto',
collapsible:false,
activTab:0,
items:[{
title:'<font color="red">任務列版表權<font>',
items:[Ext.getCmp('taskGrid')]
}]
});
⑽ 如何利用java來調用證書(如何實現獲取證書公鑰以及客服信任號)
package com.security;
import java.io.*;
import java.security.*;
import java.security.cert.*;
import java.util.*;
import java.math.*;
import sun.security.x509.*;
/**
* <>Description: 該程序根據簽發者(CA)的證書信息(即CA的私鑰)來對被簽發者
* 的證書進行簽名,過程即是使用CA的證書和被簽證書來重構形成一個新的證書</p>
* @author abnerchai
* @version 1.0
*/
public class SignCert {
public static void main(String[] args) throws Exception{
char[] storepass = "100200".toCharArray();
//存放CA證書和被簽證書的證書庫的訪問密碼
char[] cakeypass = "200100".toCharArray();//CA數字證書條目的訪問密碼
String alias = "missionCA";
//CA證書在證書庫中的別名,這個CA的證書用來簽名其它的證書
String name = "abnerCALib";//存放CA證書和被簽證書的證書庫的名字
String newLib = "SignedLib";
//新證書庫的名字,如果需要將簽名後的證書放入新庫,這是新庫的名字
char[] newLibPass = "100200".toCharArray();//設置新庫的訪問密碼
String cerFileName = "abnerCA.cer";//被簽證書的證書文件名
String aliasName = "abnerCA";//被簽證書在證書庫中的alias別名
char[] namePass = "200100".toCharArray();
//被簽證書的條目在證書庫的私鑰密碼
int n =3; //被簽證書的有效期,以年為單位,以當前時間開始計算
int sn = 200406001;
//序列號可自己定義,這里定義的意義為2004年6月簽發,是本年度CA簽發的第多少個以001計算,要求唯一
String afteraliasName = "abnerCA_Signed";
//簽名後新產生的被簽過名的證書在庫中的別名
char[] afterNewPass = "200100".toCharArray();
//簽名後新產生的被簽過名的證書在庫的條目的私鑰的密碼
//裝載證書庫
FileInputStream in = new FileInputStream(name);
KeyStore ks = KeyStore.getInstance("JKS");//JKS為證書庫的類型
ks.load(in,storepass);
//從證書庫中讀出簽發者(CA)的證書
java.security.cert.Certificate cl = ks.getCertificate(alias);
//讀出一個CA證書,這里的l是字母l不是數據字1
PrivateKey privateKey = (PrivateKey)ks.getKey(alias,cakeypass);
//根據別名和證書密碼讀出CA證書的私鑰
in.close();
//從證書庫中讀出的簽發者(CA)的證書中提取簽發者的信息
byte[] encodl = cl.getEncoded();//提取證書的編碼,這里是字母l不是數據字1
X509CertImpl cimpl = new X509CertImpl(encodl);
//這里是字母l不是數據字1,根據證書的編碼創建X509CertImpl類型的對象
//根據上面的對象獲得X509CertInfo類型的對象,該對象封裝了證書的全部內容。
X509CertInfo cinfo_first =
(X509CertInfo)cimpl.get(X509CertImpl.NAME+"."+X509CertImpl.INFO);
//然後獲得X500Name類型的簽發者信息
X500Name issuer = (X500Name)
cinfo_first.get(X509CertInfo.SUBJECT+"."+CertificateIssuerName.DN_NAME);
//獲取待簽發的證書,即獲取被簽發者的證書
//可從密鑰庫中獲取,也可從導出的證書文件中獲取,這里給出兩種方式 ////////////////////////////////////////////////////////////////////////
//方式一、採用從導出的cer文件中獲取 start
///////////////////////////////////////////////////////////////////////////////
/*
CertificateFactory cf = CertificateFactory.getInstance("X.509");
//X.509是使用最多的一種數字證書標准
FileInputStream in2 = new FileInputStream(cerFileName);//被簽證書文件
java.security.cert.Certificate c2 = cf.generateCertificate(in2);
//生成需要被簽的證書
in2.close();
byte[] encod2 = c2.getEncoded();
X509CertImpl cimp2 = new X509CertImpl(encod2);
//獲得被簽證書的詳細內容,然後根據這個證書生成新證書
X509CertInfo cinfo_second =
(X509CertInfo)cimp2.get(X509CertImpl.NAME+"."+X509CertImpl.INFO);
*/
///////////////////////////////////////////////////////////////////////////////
//end 方式一
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
//方式二、從證書庫中讀出被簽的證書 start
///////////////////////////////////////////////////////////////////////////////
java.security.cert.Certificate c3 = ks.getCertificate(aliasName);
//從證書庫中讀出被簽證書,然後生成新的證書
byte[] encod3 = c3.getEncoded();
X509CertImpl cimp3 = new X509CertImpl(encod3);
X509CertInfo cinfo_second =
(X509CertInfo)cimp3.get(X509CertImpl.NAME+"."+X509CertImpl.INFO); ///////////////////////////////////////////////////////////////////////////
//end方式二
/////////////////////////////////////////////////////////////////////////// //設置新證書的有效期,使之為當前向後n年有效,新證書的
//截止日期不能超過CA證書的有效日期
Date beginDate = new Date();
Calendar cal = Calendar.getInstance();
cal.setTime(beginDate);
cal.add(cal.YEAR,n);
Date endDate = cal.getTime();
CertificateValidity cv = new CertificateValidity(beginDate,endDate);
cinfo_second.set(X509CertInfo.VALIDITY,cv);
//設置新證書的序列號
CertificateSerialNumber csn = new CertificateSerialNumber(sn);
cinfo_second.set(X509CertInfo.SERIAL_NUMBER,csn);
//設置新證書的簽發者
cinfo_second.set(X509CertInfo.ISSUER+"."+CertificateIssuerName.DN_NAME,issuer);
//新的簽發者是CA的證書中讀出來的
//設置新證書的演算法,指定CA簽名該證書所使用的演算法為md5WithRSA
AlgorithmId algorithm = new AlgorithmId(AlgorithmId.md5WithRSAEncryption_oid);
cinfo_second.set(CertificateAlgorithmId.NAME+"."+
CertificateAlgorithmId.ALGORITHM,algorithm);
//創建新的簽名後的證書
X509CertImpl newcert = new X509CertImpl(cinfo_second);
//簽名,使用CA證書的私鑰進行簽名,簽名使用的演算法為MD5WithRSA
newcert.sign(privateKey,"MD5WithRSA");//這樣便得到了經過CA簽名後的證書
//把新證書存入證書庫
//把新生成的證書存入一個新的證書庫,也可以存入原證書庫,
//存入新證書庫,則新證書庫中不僅包含原證書庫中的所有條目,
//而且新增加了一個這次產生的條目。注意,這時,新產生的簽名後的證書只
//包括公鑰和主體信息及簽名信息,不包括私鑰信息。這里給出兩種方式。
///////////////////////////////////////////////////////////////////////////
//方式一:存入新密鑰庫
///////////////////////////////////////////////////////////////////////////
/*
ks.setCertificateEntry(afteraliasName,newcert);
FileOutputStream out = new FileOutputStream(newLib);
//存入新庫signedLib,並設置新庫的庫訪問密碼
ks.store(out,newLibPass);
out.close();
*/
///////////////////////////////////////////////////////////////////////////
//end 方式一
///////////////////////////////////////////////////////////////////////////
//也可以採用另外一種方式,存入原證書庫中
//存入原庫中,即在原證書庫中增加一條證書,這個證書是原證書經過簽名後的證書
//這個新證書含有私鑰和私鑰密碼
///////////////////////////////////////////////////////////////////////////
//方式二,存入原密鑰庫
///////////////////////////////////////////////////////////////////////////
//先在原庫中讀出被簽證書的私鑰
PrivateKey prk = (PrivateKey)ks.getKey(aliasName,namePass);
java.security.cert.Certificate[] cchain = {newcert};
//存入原來的庫,第二個參數為原證書的私鑰,第三個參數為新證書的私鑰密碼,第三個參數為新證書
ks.setKeyEntry(afteraliasName,prk,afterNewPass,cchain); //用新密鑰替代原來的沒有簽名的證書的密碼
FileOutputStream out2 = new FileOutputStream(name);
ks.store(out2,storepass);//存入原來的庫中,第二個參數為該庫的訪問密碼
///////////////////////////////////////////////////////////////////////////
//end 方式二
///////////////////////////////////////////////////////////////////////////
}
}