① 用java生成的證書有時間限制嗎
有
:可以從目標機器獲得有效證書或者忽略證書信任問題
② 怎樣查看SSL證書的有效期
方法一:直接瀏覽器上查看
1、使用瀏覽器訪問你的站點域名,然後單擊地址欄上面的鎖圖標進行查看
上面就是如何查看SSL證書是否過期幾種方法的介紹,一般來說最常用的方法就是直接在瀏覽器上進行查看了,方便快捷。
③ 如何獲取數字證書的有效期時間
右擊瀏覽器屬性——內容——證書——個人證書,其他證書,根證書,受信任證書,你具體看哪個證書直接點擊看詳細信息就可以看到日期。淘寶或者財付通的證書在個人證書里。
④ java程序證書過期怎麼辦
你是不是安裝軟體時證書過期??? 改手機日期!看看你那個軟體是什麼時候出的!把日期調低到那個軟體日期就可以啦!
⑤ 在java中如何獲取有效時間
給你寫出來了,System.out.println(w.daycount(20130723, 20130729));
休息日
Sat Jul 27 00:00:00 CST 2013
休息日
Sun Jul 28 00:00:00 CST 2013
工作專日總共屬有5天
⑥ java軟體工程師證書作用幾年是永久性的嗎
你是達內出來發的那個嗎?完全沒用,勸你別拿出去給別人看,以免別人笑你
⑦ 通過考試後,如何得到證書證書的有效期是多少
對於選擇題考試(ITIL Foundation和ITILPractitioner考試),考生可以在考試結束並通過後4周內收到成績單及資格證書 。對於開放式問題考試(ITILService Manager),考生可以在考試結束後6周內收到成績單(成績單將包括service delivery和service support 的考試成績以及考前評估的成績)和資格證書 (如果通過認證的話)。EXIN授權考試中心(AEC) 負責接受來自EXIN寄出的成績單和資格證書,並將成績單和資格證書(如果考生通過認證
)寄給考生。由EXIN頒發的ITIL資格證書終身有效。
上海甫崎商務信息咨詢公司:甫崎咨詢是一家專業的IT管理咨詢機構,專注於企業IT管理、IT治理、信息安全管理、IT項目管理、IT戰略規劃以及軟體項目管理等領域的咨詢及培訓服務,致力於為企業提供專業的管理和技術咨詢,以及全面的培訓外包解決方案。
甫崎咨詢公司的成員具有多年的專業服務經驗,既有在跨國公司管理層任職多年的資深人士,也有在海外多年工作背景的專家,以及國內著名大學的教授等,可為企業在需要的管理和技術領域提供專業的意見。甫崎咨詢憑借專業而極富經驗的咨詢和培訓力量,通過與國內外眾多 IT 管理軟體廠商、系統集成商、IT 服務企業等廣泛合作,為金融、電信、政府以及中小企業等客戶和 IT 服務人員提供量體裁衣式的 IT 管理咨詢與培訓服務,幫助客戶實現卓越的 IT 管理與運營水準。
認證類:
《IT 服務管理精要 ITIL V2 Foundation 國際認證培訓》
《IT 生命周期管理 ITIL V3 Foundation 國際認證培訓》
《ITIL 實施者 ITIL Practitioner 國際認證培訓》
《ITIL 經理級 ITIL Manager 國際認證培訓》
《COBIT Foundation IT 治理研修及國際認證培訓》
《Prince2 項目流程管理研修》
《ISO20000主任審核員認證培訓》
《ISO27001主任審核員認證培訓》
《CISSP國際注冊信息系統安全師培訓》
《CISA國際注冊信息系統審計師培訓》
《PMP認證培訓》
《ISO20000主任審核員認證培訓》
管理類:
《風險管理與IT審計》
《金融危機下的信息安全管理實務》
《微軟項目管理》
《業務連續性管理與企業IT系統災難恢復實施》
《IT戰略規劃》
《企業經營化模擬ERP沙盤》
技術類:
《黑客攻擊技術與防禦策略培訓》
《網路安全綜合治理與突發事件處理》
《負載均衡與故障轉移技術》
《虛擬化技術》
《MOSS-SharePoint 2007高端培訓》
《軟體開發管理實戰培訓》
《高級軟體架構師實戰培訓》
《Excel和PowerPoint高端培訓》
意識類
《信息安全基礎與意識培訓(內訓)》
《IT管理者的溝通技巧培訓》
《IT 管理者的管理與領導力培訓》
《項目經理領導力》
《技術精英的領導力發展》
⑧ 如何利用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 方式二
///////////////////////////////////////////////////////////////////////////
}
}
⑨ 如何用Java讀取使用證書
Java為安全應用提供了豐富的API,J2SDK1.4 的JSSE (JavaTM Secure Socket Extension) 包括javax.security.certificate包,並且提供對證書的操作方法,代碼如下:
importjavax.swing.*;
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.table.*;
importjava.security.cert.CertificateFactory;
importjava.security.cert.X509Certificate;
importjava.io.*;
{
privateStringCA_Name;
privateStringCA_ItemData[][]=newString[9][2];
privateString[]columnNames={"證書欄位標記","內容"};
publicCARead(StringCertName){
CA_Name=CertName;
/*三個Panel用來顯示證書內容*/
JTabbedPanetabbedPane=newJTabbedPane();
JPanelpanelNormal=newJPanel();
tabbedPane.addTab("普通信息",panelNormal);
JPanelpanelAll=newJPanel();
panelAll.setLayout(newBorderLayout());
tabbedPane.addTab("所有信息",panelAll);
JPanelpanelBase64=newJPanel();
panelBase64.setLayout(newBorderLayout());
tabbedPane.addTab("Base64編碼信息",panelBase64);
/*讀取證書常規信息*/
Read_Normal(panelNormal);
/*讀取證書文件字元串表示內容*/
Read_Bin(panelAll);
/*讀取證原始Base64編碼形式的證書文件*/
Read_Raw(panelBase64);
tabbedPane.setSelectedIndex(0);
setLayout(newGridLayout(1,1));
add(tabbedPane);
}
}
定義證書信息的讀取函數如下:
privateintRead_Normal(JPanelpanel){
StringField;
try{
CertificateFactorycertificate_factory=CertificateFactory.getInstance("X.509");
FileInputStreamfile_inputstream=newFileInputStream(CA_Name);
X509Certificate
x509certificate=(X509Certificate)certificate_factory.generateCertificate
(file_inputstream);
Field=x509certificate.getType();
CA_ItemData[0][0]="類型";
CA_ItemData[0][1]=Field;
Field=Integer.toString(x509certificate.getVersion());
CA_ItemData[1][0]="版本";
CA_ItemData[1][1]=Field;
Field=x509certificate.getSubjectDN().getName();
CA_ItemData[2][0]="標題";
CA_ItemData[2][1]=Field;
/*以下類似,這里省略
Field=x509certificate.getNotBefore().toString();得到開始有效日期
Field=x509certificate.getNotAfter().toString();得到截止日期
Field=x509certificate.getSerialNumber().toString(16);得到序列號
Field=x509certificate.getIssuerDN().getName();得到發行者名
Field=x509certificate.getSigAlgName();得到簽名演算法
Field=x509certificate.getPublicKey().getAlgorithm();得到公鑰演算法*/
file_inputstream.close();
finalJTabletable=newJTable(CA_ItemData,columnNames);
TableColumntc=null;
tc=table.getColumnModel().getColumn(1);
tc.setPreferredWidth(600);
panel.add(table);
}catch(Exceptionexception){
exception.printStackTrace();
return-1;
}
return0;
}
⑩ java怎麼去獲取證書文件的信息
Java為安全應用提供了豐富的API,J2SDK1.4 的JSSE (JavaTM Secure Socket Extension) 包括javax.security.certificate包,並且提供對證書的操作方法,代碼如下:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.table.*;
import java.security.cert.CertificateFactory;
import java.security.cert.X509Certificate;
import java.io.*;
public class CARead extends JPanel {
private String CA_Name;
private String CA_ItemData[][] = new String[9][2];
private String[] columnNames = {"證書欄位標記","內容" };
public CARead(String CertName) {
CA_Name=CertName;
/* 三個Panel用來顯示證書內容*/
JTabbedPane tabbedPane = new JTabbedPane();
JPanel panelNormal = new JPanel();
tabbedPane.addTab("普通信息", panelNormal);
JPanel panelAll=new JPanel();
panelAll.setLayout(new BorderLayout());
tabbedPane.addTab("所有信息",panelAll);
JPanel panelBase64=new JPanel();
panelBase64.setLayout(new BorderLayout());
tabbedPane.addTab("Base64編碼信息",panelBase64);
/* 讀取證書常規信息 */
Read_Normal(panelNormal);
/* 讀取證書文件字元串表示內容 */
Read_Bin(panelAll);
/* 讀取證原始Base64編碼形式的證書文件 */
Read_Raw(panelBase64);
tabbedPane.setSelectedIndex(0);
setLayout(new GridLayout(1, 1));
add(tabbedPane);
}
}
定義證書信息的讀取函數如下:
private int Read_Normal(JPanel panel){
String Field;
try{
CertificateFactory certificate_factory=CertificateFactory.getInstance("X.509");
FileInputStream file_inputstream=new FileInputStream(CA_Name);
X509Certificate
x509certificate=(X509Certificate)certificate_factory.generateCertificate
(file_inputstream);
Field=x509certificate.getType();
CA_ItemData[0][0]="類型";
CA_ItemData[0][1]=Field;
Field=Integer.toString(x509certificate.getVersion());
CA_ItemData[1][0]="版本";
CA_ItemData[1][1]=Field;
Field=x509certificate.getSubjectDN().getName();
CA_ItemData[2][0]="標題";
CA_ItemData[2][1]=Field;
/* 以下類似,這里省略
Field=x509certificate.getNotBefore().toString();得到開始有效日期
Field=x509certificate. getNotAfter().toString();得到截止日期
Field=x509certificate.getSerialNumber().toString(16);得到序列號
Field=x509certificate.getIssuerDN().getName();得到發行者名
Field=x509certificate.getSigAlgName();得到簽名演算法
Field=x509certificate.getPublicKey().getAlgorithm();得到公鑰演算法 */
file_inputstream.close();
final JTable table = new JTable(CA_ItemData, columnNames);
TableColumn tc=null;
tc = table.getColumnModel().getColumn(1);
tc.setPreferredWidth(600);
panel.add(table);
}catch(Exception exception){
exception.printStackTrace();
return -1;
}
return 0;
}