『壹』 如何生成CA證書
創建根證書密鑰文件(自己做CA)root.key:
創建根證書的申請文件root.csr:
創建一個自當前日期起為期十年的根證書root.crt:
創建伺服器證書密鑰server.key:
創建伺服器證書的申請文件server.csr
創建自當前日期起有效期為期兩年的伺服器證書server.crt
創建客戶端證書密鑰文件client.key
創建客戶端證書的申請文件client.csr
創建一個自當前日期起有效期為兩年的客戶端證書client.crt
將客戶端證書文件client.crt和客戶端證書密鑰文件client.key合並成客戶端證書安裝包client.pfx
保存生成的文件備用,其中server.crt和server.key是配置單向SSL時需要使用的證書文件,client.crt是配置雙向SSL時需要使用的證書文件,client.pfx是配置雙向SSL時需要客戶端安裝的證書文件 .crt文件和.key可以合到一個文件裡面,把2個文件合成了一個.pem文件(直接拷貝過去就行了)
『貳』 如何獲取數字證書(x509Certificate)中的指紋演算法
創建X509證書方法較多,在Windows 環境下大致總結了幾中辦法,
1) 通過CA獲取證書,
2) 通過微軟提供的makecert 工具得到測試證書
3) 編程的方法創建,.Net提供了 X509Certificate2 類,該類可以用於創建證書,但只能從RawData中創建,創建後無法修改除FriendlyName以外的任何屬性。
我在互聯網上找了很久,始終沒有找到完全通過程序創建自定義的證書的方法。後來想了一個折中辦法,就是用程序調用 makecert.exe 先生成一個證書,證書的一些參數如Subject,有效期,序列號等可以通過參數傳入,然後把生成的證書文件讀到Rawdata中,得到X509Certificate2 類型的證書對象。當然這種方法確實比較笨,必須要依賴外部進程。等後面有時間的話,我還是想按照X509 V3 標准,自己創建RawData,然後生成證書,這樣應該是比較靈活的做法。不知道網友們有沒有什麼更好的方法來創建一個自定義的證書。
通過 makecert.exe 創建X509證書的代碼如下,供大家參考
static object semObj = new object();
/// <summary>
/// 自定義的證書信息
/// </summary>
public class T_CertInfo
{
public String FriendlyName;
public String Subject;
public DateTime BeginDate;
public DateTime EndDate;
public int SerialNumber;
}
/// <summary>
/// 生成X509證書
/// </summary>
/// <param name="makecrtPath">makecert進程的目錄</param>
/// <param name="crtPath">證書文件臨時目錄</param>
/// <param name="certInfo">證書信息</param>
/// <returns></returns>
public static X509Certificate2 CreateCertificate(String makecrtPath, String crtPath,
T_CertInfo certInfo)
{
Debug.Assert(certInfo != null);
Debug.Assert(certInfo.Subject != null);
string MakeCert = makecrtPath + "makecert.exe";
string fileName = crtPath + "cer";
string userName = Guid.NewGuid().ToString();
StringBuilder arguments = new StringBuilder();
arguments.AppendFormat("-r -n \"{0}\" -ss my -sr currentuser -sky exchange ",
certInfo.Subject);
if (certInfo.SerialNumber > 0)
{
arguments.AppendFormat("-# {0} ", certInfo.SerialNumber);
}
arguments.AppendFormat("-b {0} ", certInfo.BeginDate.ToString(@"MM\/dd\/yyyy"));
arguments.AppendFormat("-e {0} ", certInfo.EndDate.ToString(@"MM\/dd\/yyyy"));
arguments.AppendFormat("\"{0}\"", fileName);
『叄』 x.509數字證書中"簽名演算法"和"微縮圖演算法"有什麼區別
數字證書基本概念
(1)什麼是證書?
在一個電子商務系統中,所有參與活動的實體都必須用證書來表明自己的身份。證書一方面可以用來向系統中的其它實體證明自己的身份(每份證書都是經「相對權威的機構」簽名的),另一方面由於每份證書都攜帶著證書持有者的公鑰(簽名證書攜帶的是簽名公鑰,密鑰加密證書攜帶的是密鑰加密公鑰),所以,證書也可以向接收者證實某人或某個機構對公開密鑰的擁有,同時也起著公鑰分發的作用。
(2)什麼是CA?
CA是Certificate Authority的縮寫,是證書授權的意思。在電子商務系統中,所有實體的證書都是由證書授權中心既CA中心分發並簽名的。一個完整、安全的電子商務系統必須建立起一個完整、合理的CA體系。CA體系由證書審批部門和證書操作部門組成。
(3)什麼是SSL?
安全套接層協議(SSL,Security Socket Layer)是網景(Netscape)公司提出的基於WEB應用的安全協議,它包括:伺服器認證、客戶認證(可選)、SSL鏈路上的數據完整性和SSL鏈路上的數據保密性,主要採用公開密鑰體制和X.509數字證書技術來提供安全性保證。對於電子商務應用來說, SSL可保證信息的真實性、完整性和保密性。但由於SSL不對應用層的消息進行數字簽名,因此不能提供交易的不可否認性,這是SSL在電子商務中使用的最大不足。有鑒於此,網景公司在從Communicator 4.04版開始的所有瀏覽器中引入了一種被稱作"表單簽名(Form Signing)"的功能,在電子商務中,可利用這一功能來對包含購買者的訂購信息和付款指令的表單進行數字簽名,從而保證交易信息的不可否認性。
(4)什麼是RA?
RA即證書發放審核部門,它是CA系統的一個功能組件。它負責對證書申請者進行資格審查,並決定是否同意給該申請者發放證書,並承擔因審核錯誤引起的、為不滿足資格的證書申請者發放證書所引起的一切後果,因此它應由能夠承擔這些責任的機構擔任。
(5)什麼是CP?
CP即證書發放的操作部門,它是CA系統的一個功能組件,負責為已授權的申請者製作、發放和管理證書,並承擔因操作運營錯誤所產生的一切後果,包括失密和為沒有獲得授權者發放證書等,它可以由審核授權部門自己擔任,也可委託給第三方擔任。
(6)什麼是CRL?
CRL是證書作廢表的縮寫。CRL中記錄尚未過期但已聲明作廢的用戶證書序列號,供證書使用者在認證對方證書時查詢使用。CRL通常被稱為證書黑名單。
(7)什麼是OCSP?
OCSP即在線證書狀態查詢(Online Certificate Status Protocol),使用戶可以實時查詢證書的作廢狀態。
(8)什麼是密鑰對,怎樣使用它,怎樣獲得密鑰對?
像有的加密技術中採用相同的密鑰加密、解密數據,公共密鑰加密技術採用一對匹配的密鑰進行加密、解密。每把密鑰執行一種對數據的單向處理,每把的功能恰恰與另一把相反,一把用於加密時,則另一把就用於解密。
公共密鑰是由其主人加以公開的,而私人密鑰必須保密存放。為發送一份保密報文,發送者必須使用接照叩墓
『肆』 SSL證書生成方法,怎麼生成SSL證書
SSL證書需要從權威的CA機構去申請,這樣瀏覽器才會信任,自己生成的ssl證書存在安全隱患且不受信任。如果沒有預算,可以申請免費ssl證書:網頁鏈接,當然也有付費的,看你選擇~
『伍』 JAVA 如何生成證書
下面產生一個自簽證書。安裝完J2SDK(這里用的是J2SDK1.4)後,在J2SDK安裝目錄的bin目錄下,有一個keytool的可執行程序。利用keytool產生自簽證書的步驟如下:
第一步,用-genkey命令選項,產生公私密鑰對。在控制台界面輸入:keytool -genkey -alias testkeypair -keyalg RSA -keysize 1024 -sigalg MD5withRSA。這里的-alias表示使用這對公私密鑰產生新的keystore入口的別名(keystore是用來存放管理密鑰對和證書鏈的,預設位置是在使用者主目錄下,以.keystore為名的隱藏文件,當然也可指定某個路徑存放.keystore文件);-keyalg是產生公私鑰對所用的演算法,這里是RSA;-keysize定義密鑰的長度;-sigalg是簽名演算法,選擇MD5withRSA,即用RSA簽名,然後用MD5哈希演算法摘要。接下來,系統會提示進行一些輸入:
輸入keystore密碼: abc123
您的名字與姓氏是什麼?
[Unknown]: Li
您的組織單位名稱是什麼?
&nbs
問題的其他解決辦法參考 :
http://..com/question/41527308.html?a=5.7121119214148&t=JAVA+
『陸』 如何生成CA證書
如何生成CA證書
一般情況下,如果能找到可用的證書,就可以直接使用,只不過會因證書的某些信息不正確或與部署證書的主機不匹配而導致瀏覽器提示證書無效,但這並不影響使用。
需要手工生成證書的情況有:
找不到可用的證書
需要配置雙向SSL,但缺少客戶端證書
需要對證書作特別的定製
首先,無論是在Linux下還是在Windows下的Cygwin中,進行下面的操作前都須確認已安裝OpenSSL軟體包。
1. 創建根證書密鑰文件(自己做CA)root.key:
openssl genrsa -des3 -out root.key
輸出內容為:
[lenin@archer ~]$ openssl genrsa -des3 -out root.key
Generating RSA private key, 512 bit long molus
……………..++++++++++++
..++++++++++++
e is 65537 (0×10001)
Enter pass phrase for root.key: ← 輸入一個新密碼
Verifying – Enter pass phrase for root.key: ← 重新輸入一遍密碼
2. 創建根證書的申請文件root.csr:
openssl req -new -key root.key -out root.csr
輸出內容為:
[lenin@archer ~]$ openssl req -new -key root.key -out root.csr
Enter pass phrase for root.key: ← 輸入前面創建的密碼
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter 『.』, the field will be left blank.
—–
Country Name (2 letter code) [AU]:CN ← 國家代號,中國輸入CN
State or Province Name (full name) [Some-State]:BeiJing ← 省的全名,拼音
Locality Name (eg, city) []:BeiJing ← 市的全名,拼音
Organization Name (eg, company) [Internet Widgits Pty Ltd]:MyCompany Corp. ← 公司英文名
Organizational Unit Name (eg, section) []: ← 可以不輸入
Common Name (eg, YOUR name) []: ← 此時不輸入
Email Address []:[email protected] ← 電子郵箱,可隨意填
Please enter the following 『extra』 attributes
to be sent with your certificate request
A challenge password []: ← 可以不輸入
An optional company name []: ← 可以不輸入
3. 創建一個自當前日期起為期十年的根證書root.crt:
openssl x509 -req -days 3650 -sha1 -extensions v3_ca -signkey root.key -in root.req -out root.crt
輸出內容為:
[lenin@archer ~]$ openssl x509 -req -days 3650 -sha1 -extensions v3_ca -signkey root.key -in root.csr -out root.crt
Signature ok
subject=/C=CN/ST=BeiJing/L=BeiJing/O=MyCompany Corp./[email protected]
Getting Private key
Enter pass phrase for root.key: ← 輸入前面創建的密碼
4. 創建伺服器證書密鑰server.key:
openssl genrsa –des3 -out server.key 2048
輸出內容為:
[lenin@archer ~]$ openssl genrsa -out server.key 2048
Generating RSA private key, 2048 bit long molus
….+++
…………………………………………..+++
e is 65537 (0×10001)
運行時會提示輸入密碼,此密碼用於加密key文件(參數des3便是指加密演算法,當然也可以選用其他你認為安全的演算法.),以後每當需讀取此文件(通過openssl提供的命令或API)都需輸入口令.如果覺得不方便,也可以去除這個口令,但一定要採取其他的保護措施!
去除key文件口令的命令:
openssl rsa -in server.key -out server.key
5.創建伺服器證書的申請文件server.csr:
openssl req -new -key server.key -out server.csr
輸出內容為:
[lenin@archer ~]$ openssl req -new -key server.key -out server.req
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter 『.』, the field will be left blank.
—–
Country Name (2 letter code) [AU]:CN ← 國家名稱,中國輸入CN
State or Province Name (full name) [Some-State]:BeiJing ← 省名,拼音
Locality Name (eg, city) []:BeiJing ← 市名,拼音
Organization Name (eg, company) [Internet Widgits Pty Ltd]:MyCompany Corp. ← 公司英文名
Organizational Unit Name (eg, section) []: ← 可以不輸入
Common Name (eg, YOUR name) []:www.mycompany.com ← 伺服器主機名,若填寫不正確,瀏覽器會報告證書無效,但並不影響使用
Email Address []:[email protected] ← 電子郵箱,可隨便填
Please enter the following 『extra』 attributes
to be sent with your certificate request
A challenge password []: ← 可以不輸入
An optional company name []: ← 可以不輸入
6. 創建自當前日期起有效期為期兩年的伺服器證書server.crt:
openssl x509 -req -days 730 -sha1 -extensions v3_req -CA root.crt -CAkey root.key -CAserial root.srl -CAcreateserial -in server.csr -out server.crt
輸出內容為:
[lenin@archer ~]$ openssl x509 -req -days 730 -sha1 -extensions v3_req -CA root.crt -CAkey root.key -CAcreateserial -in server.csr -out server.crt
Signature ok
subject=/C=CN/ST=BeiJing/L=BeiJing/O=MyCompany Corp./CN=www.mycompany.com/[email protected]
Getting CA Private Key
Enter pass phrase for root.key: ← 輸入前面創建的密碼
7. 創建客戶端證書密鑰文件client.key:
openssl genrsa -des3 -out client.key 2048
輸出內容為:
[lenin@archer ~]$ openssl genrsa -des3 -out client.key 2048
Generating RSA private key, 2048 bit long molus
……………………………………………………………………………..+++
……………………………………………………………………………………………………….+++
e is 65537 (0×10001)
Enter pass phrase for client.key: ← 輸入一個新密碼
Verifying – Enter pass phrase for client.key: ← 重新輸入一遍密碼
8. 創建客戶端證書的申請文件client.csr:
openssl req -new -key client.key -out client.csr
輸出內容為:
[lenin@archer ~]$ openssl req -new -key client.key -out client.csr
Enter pass phrase for client.key: ← 輸入上一步中創建的密碼
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter 『.』, the field will be left blank.
—–
Country Name (2 letter code) [AU]:CN ← 國家名稱,中國輸入CN
State or Province Name (full name) [Some-State]:BeiJing ← 省名稱,拼音
Locality Name (eg, city) []:BeiJing ← 市名稱,拼音
Organization Name (eg, company) [Internet Widgits Pty Ltd]:MyCompany Corp. ← 公司英文名
Organizational Unit Name (eg, section) []: ← 可以不填
Common Name (eg, YOUR name) []:Lenin ← 自己的英文名,可以隨便填
Email Address []:[email protected] ← 電子郵箱,可以隨便填
Please enter the following 『extra』 attributes
to be sent with your certificate request
A challenge password []: ← 可以不填
An optional company name []: ← 可以不填
9. 創建一個自當前日期起有效期為兩年的客戶端證書client.crt:
openssl x509 -req -days 730 -sha1 -extensions v3_req -CA root.crt -CAkey root.key -CAserial root.srl -CAcreateserial -in client.csr -out client.crt
輸出內容為:
[lenin@archer ~]$ openssl x509 -req -days 730 -sha1 -extensions v3_req -CA root.crt -CAkey root.key -CAcreateserial -in client.csr -out client.crt
Signature ok
subject=/C=CN/ST=BeiJing/L=BeiJing/O=MyCompany Corp./CN=www.mycompany.com/[email protected]
Getting CA Private Key
Enter pass phrase for root.key: ← 輸入上面創建的密碼
10. 將客戶端證書文件client.crt和客戶端證書密鑰文件client.key合並成客戶端證書安裝包client.pfx:
openssl pkcs12 -export -in client.crt -inkey client.key -out client.pfx
輸出內容為:
[lenin@archer ~]$ openssl pkcs12 -export -in client.crt -inkey client.key -out client.pfx
Enter pass phrase for client.key: ← 輸入上面創建的密碼
Enter Export Password: ← 輸入一個新的密碼,用作客戶端證書的保護密碼,在客戶端安裝證書時需要輸入此密碼
Verifying – Enter Export Password: ← 確認密碼
11. 保存生成的文件備用,其中server.crt和server.key是配置單向SSL時需要使用的證書文件,client.crt是配置雙向SSL時需要使用的證書文件,client.pfx是配置雙向SSL時需要客戶端安裝的證書文件
.crt文件和.key可以合到一個文件裡面,把2個文件合成了一個.pem文件(直接拷貝過去就行了)
參考:http://sinolog.it/?p=1460
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
http://blog.sina.com.cn/s/blog_4fd50c390101891c.html
x509證書一般會用到三類文,key,csr,crt。
Key是私用密鑰openssl格,通常是rsa演算法。
Csr是證書請求文件,用於申請證書。在製作csr文件的時,必須使用自己的私鑰來簽署申,還可以設定一個密鑰。
crt是CA認證後的證書文,(windows下面的,其實是crt),簽署人用自己的key給你簽署的憑證。
1.key的生成
opensslgenrsa -des3 -out server.key 2048
這樣是生成rsa私鑰,des3演算法,openssl格式,2048位強度。server.key是密鑰文件名。為了生成這樣的密鑰,需要一個至少四位的密碼。可以通過以下方法生成沒有密碼的key:
opensslrsa -in server.key -out server.key
server.key就是沒有密碼的版本了。
2.生成CA的crt
opensslreq -new -x509 -key server.key -out ca.crt -days3650
生成的ca.crt文件是用來簽署下面的server.csr文件。
3.csr的生成方法
opensslreq -new -key server.key -outserver.csr
需要依次輸入國家,地區,組織,email。最重要的是有一個common name,可以寫你的名字或者域名。如果為了https申請,這個必須和域名吻合,否則會引發瀏覽器警報。生成的csr文件交給CA簽名後形成服務端自己的證書。
4.crt生成方法
CSR文件必須有CA的簽名才可形成證書,可將此文件發送到verisign等地方由它驗證,要交一大筆錢,何不自己做CA呢。
opensslx509 -req -days 3650 -in server.csr -CA ca.crt -CAkey server.key-CAcreateserial -out server.crt
輸入key的密鑰後,完成證書生成。-CA選項指明用於被簽名的csr證書,-CAkey選項指明用於簽名的密鑰,-CAserial指明序列號文件,而-CAcreateserial指明文件不存在時自動生成。
最後生成了私用密鑰:server.key和自己認證的SSL證書:server.crt
證書合並:
catserver.key server.crt > server.pem
『柒』 https 證書生成方法https 證書生成工具
不建議自己生成https證書,自己生成的這種https證書瀏覽器不信任,容易被仿冒和偽造內,存在較大的安全容風險。
現在https證書成本也很低,甚至還有CA機構頒發免費的https證書,比如沃通免費https證書,startssl免費證書等。CA機構頒發的證書比自己生成的https證書更安全可信,主要是瀏覽器信任和防止假冒偽造。
『捌』 https證書生成方法,怎麼生成https證書
HTTPS認證、復HTTPS證書,可以在制淘寶裡面找到Gworg申請。
申請HTTPS證書:
確定並且列出具體需要的域名。
進入淘寶中找到Gworg並且選擇HTTPS證書。
根據提示完成HTTPS域名認證。
獲得HTTPS證書並且安裝到伺服器。
解決辦法:Gworg認證並且活動和HTTPS證書。
『玖』 怎麼自己生成SSL證書並且在伺服器里配置
不起作用,並不會被瀏覽器信任,反而增加了很多不安全因素。
創建自簽名證書的步驟
注意:以下步驟僅用於配置內部使用或測試需要的SSL證書。
第1步:生成私鑰
使用openssl工具生成一個RSA私鑰
$ openssl genrsa -des3 -out server.key 2048
說明:生成rsa私鑰,des3演算法,2048位強度,server.key是秘鑰文件名。
注意:生成私鑰,需要提供一個至少4位的密碼。
第2步:生成CSR(證書簽名請求)
生成私鑰之後,便可以創建csr文件了。
此時可以有兩種選擇。理想情況下,可以將證書發送給證書頒發機構(CA),CA驗證過請求者的身份之後,會出具簽名證書(很貴)。另外,如果只是內部或者測試需求,也可以使用OpenSSL實現自簽名,具體操作如下:
$ openssl req -new -key server.key -out server.csr
說明:需要依次輸入國家,地區,城市,組織,組織單位,Common Name和Email。其中Common Name,可以寫自己的名字或者域名,如果要支持https,Common Name應該與域名保持一致,否則會引起瀏覽器警告。
Country Name (2 letter code) [AU]:CN
State or Province Name (full name) [Some-State]:Beijing
Locality Name (eg, city) []:Beijing
Organization Name (eg, company) [Internet Widgits Pty Ltd]:joyios
Organizational Unit Name (eg, section) []:info technology
Common Name (e.g. server FQDN or YOUR name) []:demo.joyios.com
Email Address []:[email protected]
第3步:刪除私鑰中的密碼
在第1步創建私鑰的過程中,由於必須要指定一個密碼。而這個密碼會帶來一個副作用,那就是在每次Apache啟動Web伺服器時,都會要求輸入密碼,這顯然非常不方便。要刪除私鑰中的密碼,操作如下:
cp server.key server.key.org
openssl rsa -in server.key.org -out server.key
第4步:生成自簽名證書
如果你不想花錢讓CA簽名,或者只是測試SSL的具體實現。那麼,現在便可以著手生成一個自簽名的證書了。
$ openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
說明:crt上有證書持有人的信息,持有人的公鑰,以及簽署者的簽名等信息。當用戶安裝了證書之後,便意味著信任了這份證書,同時擁有了其中的公鑰。證書上會說明用途,例如伺服器認證,客戶端認證,或者簽署其他證書。當系統收到一份新的證書的時候,證書會說明,是由誰簽署的。如果這個簽署者確實可以簽署其他證書,並且收到證書上的簽名和簽署者的公鑰可以對上的時候,系統就自動信任新的證書。
第5步:安裝私鑰和證書
將私鑰和證書文件復制到Apache的配置目錄下即可,在Mac 10.10系統中,復制到/etc/apache2/目錄中即可。
需要注意的是,在使用自簽名證書時,瀏覽器會提示證書不受信任,如果你是對外網站使用,建議還是去CA機構申請可信的SSL證書。
『拾』 keytool生成證書默認是用的什麼演算法
Java製作證書的工具keytool用法總結
一、keytool的概念
keytool 是個密鑰和證書管理工具。它使用戶能夠管理自己的公鑰/私鑰對及相關證書,用於(通過數字簽名)自我認證(用戶向別的用戶/服務認證自己)或數據完整性以及認證服務。在JDK 1.4以後的版本中都包含了這一工具,它的位置為%JAVA_HOME%\bin\keytool.ex
二、keytool的用法
三、創建證書
創建證書主要是使用" -genkeypair",該命令的可用參數如下:
範例:生成一個名稱為test1的證書
Cmd代碼
1 keytool -genkeypair -alias "test1" -keyalg "RSA" -keystore "test.keystore"
功能:
創建一個別名為test1的證書,該證書存放在名為test.keystore的密鑰庫中,若test.keystore密鑰庫不存在則創建。
參數說明:
-genkeypair:生成一對非對稱密鑰;
-alias:指定密鑰對的別名,該別名是公開的;
-keyalg:指定加密演算法,本例中的採用通用的RAS加密演算法;
-keystore:密鑰庫的路徑及名稱,不指定的話,默認在操作系統的用戶目錄下生成一個".keystore"的文件