1. 如何將你的瀏覽器SSL協議的設置尋找SSLv3/TLSv1協議支持
SSL通信的工作原理 SSL協議的主要用途是在兩個通信應用程序之間提供私密性和可靠性,這個過程通過3個元素來完成: (1)握手協議:這個協議負責被子用於客戶機和伺服器之間會話的加密參數。當一個SSL客戶機和伺服器第一次開始通信時,它們在一個協議版本上達成一致,選擇加密演算法和認證方式,並使用公鑰技術來生成共享密鑰。 (2)記錄協議:這個協議用於交換應用數據。應用程序消息被分割成可管理的數據塊,還可以壓縮,並產生一個MAC(消息認證代碼),然後結果被加密並傳輸。接受方接受數據並對它解密,校驗MAC,解壓並重新組合,把結果提供給應用程序協議。 (3)警告協議:這個協議用於每時示在什麼時候發生了錯誤或兩個主機之間的會話在什麼時候終止。 SSL協議通信的握手步驟如下: 第1步,SSL客戶機連接至SSL伺服器,並要求伺服器驗證它自身的身份; 第2步,伺服器通過發送它的數字證書證明其身份。這個交換還可以包括整個證書鏈,直到某個根證書頒發機構(CA)。通過檢查有效日期並確認證書包含可信任CA的數字簽名來驗證證書的有效性。 第3步,伺服器發出一個請求,對客戶端的證書進行驗證,但是由於缺乏公鑰體系結構,當今的大多數伺服器不進行客戶端認證。 第4步,協商用於加密的消息加密演算法和用於完整性檢查的哈希函數,通常由客戶端提供它支持的所有演算法列表,然後由伺服器選擇最強大的加密演算法。 第5步,客戶機和伺服器通過以下步驟生成會話密鑰: ·客戶機生成一個隨機數,並使用伺服器的公鑰(從伺服器證書中獲取)對它加密,以送到伺服器上。 ·伺服器用更加隨機的數據(客戶機的密鑰可用時則使用客戶機密鑰,否則以明文方式發送數據)響應。 ·使用哈希函數從隨機數據中生成密鑰。 SSL VPN的主要優勢和不足 上面我們介紹了有關SSL VPN的一些基本情況,但是就像任何新技術的產生一樣,相對傳統的技術肯定會存在一些重要的優點,當然不足之處通常也是有的,下面就分別予以介紹。 1.SSL VPN的主要優點 這樣一種新型的VPN技術主要優勢體現在哪裡呢?目前這種VPN技術的應用正逐漸呈上升趨勢,原因何在呢?下面就是幾個主要的方面: (1)無需安裝客戶端軟體:在大多數執行基於SSL協議的遠程訪問是不需要在遠程客戶端設備上安裝軟體。只需通過標準的Web瀏覽器連接網際網路,即可以通過網頁訪問到企業總部的網路資源。這樣無論是從軟體協議購買成本上,還是從維護、管理成本上都可以節省一大筆資金,特別是對於大、中型企業和網路服務提供商。 (2)適用大多數設備:基於Web訪問的開放體系可以在運行標準的瀏覽器下可以訪問任何設備,包括非傳統設備,如可以上網的電話和PDA通訊產品。這些產品目前正在逐漸普及,因為它們在不進行遠程訪問時也是一種非常理想的現代時尚產品。 (3)適用於大多數操作系統:可以運行標準的網際網路瀏覽器的大多數操作系統都可以用來進行基於Web的遠程訪問,不管操作系統是Windows、Macintosh、UNIX還是 Linux。可以對企業內部網站和Web站點進行全面的訪問。用戶可以非常容易地得到基於企業內部網站的資源,並進行應用。 (4)支持網路驅動器訪問:用戶通過SSL VPN通信可以訪問在網路驅動器上的資源。 (5)良好的安全性:用戶通過基於SSL的Web訪問並不是網路的真實節點,就像IPSec安全協議一樣。而且還可代理訪問公司內部資源。因此,這種方法可以非常安全的,特別是對於外部用戶的訪問。 (6)較強的資源控制能力:基於Web的代理訪問允許公司為遠程訪問用戶進行詳盡的資源訪問控制。 (7)減少費用:為那些簡單遠程訪問用戶(僅需進入公司內部網站或者進行Email通信),基於SSL 的VPN網路可以非常經濟地提供遠程訪問服務。 (8)可以繞過防火牆和代理伺服器進行訪問:基於SSL的遠程訪問方案中,使用NAT(網路地址轉換)服務的遠程用戶或者網際網路代理服務的用戶可以從中受益,因為這種方案可以繞過防火牆和代理伺服器進行訪問公司資源,這是採用基於IPSec安全協議的遠程訪問所很難或者根本做不到的。 2.SSL VPN的主要不足之處 上面介紹SSL VPN技術這么多優勢,那麼為什麼現在不是所有用戶都使用SSL VPN,且據權威調查機構調查顯示目前絕大多部分企業仍採用IPSec VPN呢?SSL VPN的主要不足在哪裡呢? (1)必須依靠網際網路進行訪問:為了通過基於SSL VPN進行遠程工作,當前必須與網際網路保持連通性。因為此時Web瀏覽器實質上是扮演客戶伺服器的角色,遠程用戶的Web瀏覽器依靠公司的伺服器進行所有進程。正因如此,如果網際網路沒有連通,遠程用戶就不能與總部網路進行連接,只能單獨工作。 (2)對新的或者復雜的Web技術提供有限支持:基於SSL的VPN方案是依賴於反代理技術來訪問公司網路的。因為遠程用戶是從公用網際網路來訪問公司網路的,而公司內部網路信息通常不僅是處於防火牆後面,而且通常是處於沒有內部網IP地址路由表的空間中。反代理的工作就是翻譯出遠程用戶Web瀏覽器的需求,通常使用常見的URL地址重寫方法,例如,內部網站也許使用內部DNS伺服器地址鏈接到其他的內部網鏈接,而URL地址重寫必需完全正確地讀出以上鏈接信息,並且重寫這些URL地址,以便這些鏈接可以通過反代理技術獲得路由,當有需要時,遠程用戶可以輕松地通過點擊路由進入公司內部網路。對於URL地址重寫器完全正確理解所傳輸的網頁結構是極其重要的,只有這樣才可正確顯示重寫後的網頁,並在遠程用戶計算機瀏覽器上進行正確地操作。 (3)只能有限地支持Windows應用或者其它非Web系統:因為大多數基於SSL的VPN都是基Web瀏覽器工作的,遠程用戶不能在Windows,、UNIX、Linux、AS400或者大型系統上進行非基於Web界面的應用。雖然有些SSL提供商已經開始合並終端服務來提供上述非Web應用,但不管如何,目前SSL VPN還未正式提出全面支持,這一技術還有待討論,也可算是一個挑戰。 (4)只能為訪問資源提供有限安全保障:當使用基於SSL協議通過Web瀏覽器進行VPN通信時,對用戶來說外部環境並不是完全安全、可達到無縫連接的。因為SSL VPN只對通信雙方的某個應用通道進行加密,而不是對在通信雙方的主機之間的整個通道進行加密。在通信時,在Web頁面中呈現的文件很難也基本上無法保證只出現類似於上傳的文件和郵件附件等簡單的文件,這樣就很難保證其它文件不被暴露在外部,存在一定的安全隱患
2. 如何獲取數字證書(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);
3. 如何生成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
4. 如何使用OpenSSL工具生成根證書與應用證書
使用OpenSSL工具生成根證書與應用證書方法:
1、生成頂級CA的公鑰證書和私鑰文件,有效期10年(RSA 1024bits,默認) openssl req -new -x509 -days 3650 -keyout CARoot1024.key -out CARoot1024.crt
2、 為頂級CA的私鑰文件去除保護口令 openssl rsa -in CARoot1024.key -out CARoot1024.key
3、 生成頂級CA的公鑰證書和私鑰文件,有效期15年(RSA 2048bits,指定) openssl req -newkey rsa:2048 -x509 -days 5480 -keyout CARoot2048.key -out CARoot2048.crt
4、 為頂級CA的私鑰文件去除保護口令 openssl rsa -in CARoot2048.key -out CARoot2048.key
5、 為應用證書/中級證書生成私鑰文件 openssl genrsa -out app.key 2048
6、 根據私鑰文件,為應用證書/中級證書生成 csr 文件(證書請求文件) openssl req -new -key app.key -out app.csr
7、 使用CA的公私鑰文件給 csr 文件簽名,生成應用證書,有效期5年 openssl ca -in app.csr -out app.crt -cert CARoot1024.crt -keyfile CARoot1024.key -days 1826 -policy policy_anything
8、 使用CA的公私鑰文件給 csr 文件簽名,生成中級證書,有效期5年 openssl ca -extensions v3_ca -in app.csr -out app.crt -cert CARoot1024.crt -keyfile CARoot1024.key -days 1826 -policy policy_anything
以上是生成根證書與應用證書過程中要用到的所有命令,根據生成目標不同,分為三組。其中,前面兩組都用於生成自簽名的頂級CA(區別只在於密鑰長度不同),實際應用中只需根據需求選擇一組即可。 最後一組用於生成非自簽名的證書,包括中級證書與應用證書。所謂中級證書,是具有繼續頒發下級證書許可權的子CA,而本文中所說的應用證書,特指不能用來繼續頒發下級證書,只能用來證明個體身份的證書。頂級CA在簽發二者的時候,只是多少一個 -extensions v3_ca 選項的區別,這個選項賦予被簽發的證書繼續簽發下級證書的權力。
5. 如何使用openssl生成證書
Step 1. Create key (password protected)
openssl genrsa -out prvtkey.pem 1024/2038 (with out password protected)
openssl genrsa -des3 -out prvtkey.pem 1024/2048 (password protected)
這個命令會生成一個/2048位的密鑰。
Step 2. Create certification request
openssl req -new -key prvtkey.pem -out cert.csr
openssl req -new -nodes -key prvtkey.pem -out cert.csr
這個命令將會生成一個證書請求,當然,用到了前面生成的密鑰prvtkey.pem文件
這里將生成一個新的文件cert.csr,即一個證書請求文件,你可以拿著這個文件去數字證書頒發機構(即CA)申請一個數字證書。CA會給你一個新的文件cacert.pem,那才是你的數字證書。
Step 3: Send certificate request to Certification Authority (CA)
如果是自己做測試,那麼證書的申請機構和頒發機構都是自己。就可以用下面這個命令來生成證書:
openssl req -new -x509 -key prvtkey.pem -out cacert.pem -days 1095
這個命令將用上面生成的密鑰privkey.pem生成一個數字證書cacert.pem
cacert.pem 生成過程見「OpenSSL建立自己的CA」
有了privkey.pem和cacert.pem文件後就可以在自己的程序中使用了,比如做一個加密通訊的伺服器
-------------
OpenSSL建立自己的CA
(1) 環境准備
首先,需要准備一個目錄放置CA文件,包括頒發的證書和CRL(Certificate Revoke List)。
這里我們選擇目錄 /var/MyCA。
然後我們在/var/MyCA下建立兩個目錄,certs用來保存我們的CA頒發的所有的證書的副本;private用來保存CA證書的私鑰匙。
除了生成鑰匙,在我們的CA體系中還需要創建三個文件。第一個文件用來跟蹤最後一次頒發的證書的序列號,我們把它命名為serial,初始化為01。第二個文件是一個排序資料庫,用來跟蹤已經頒發的證書。我們把它命名為index.txt,文件內容為空。
$ mkdir /var/MyCA
$ cd /var/MyCA
$ mkdir certs private
$ chmod g-rwx,o-rwx private
$ echo "01" > serial
$ touch index.txt
第三個文件是OpenSSL的配置文件,創建起來要棘手點。示例如下:
$ touch openssl.cnf
文件內容如下:
[ ca ]
default_ca = myca
[ myca ]
dir = /var/MyCA
certificate = $dir/cacert.pem
database = $dir/index.txt
new_certs_dir = $dir/certs
private_key = $dir/private/cakey.pem
serial = $dir/serial
default_crl_days= 7
default_days = 365
default_md = md5
policy = myca_policy
x509_extensions = certificate_extensions
[ myca_policy ]
commonName = supplied
stateOrProvinceName = supplied
countryName = supplied
emailAddress = supplied
organizationName= supplied
organizationalUnitName = optional
[ certificate_extensions ]
basicConstraints= CA:false
我們需要告訴OpenSSL配置文件的路徑,有兩種方法可以達成目的:通過config命令選項;通過環境變數OPENSSL_CONF。這里我們選擇環境變數的方式。
$ OPENSSL_CONF=/var/MyCA/openssl.cnf"
$ export OPENSSL_CONF
(2) 生成根證書 (Root Certificate)
我們需要一個證書來為自己頒發的證書簽名,這個證書可從其他CA獲取,或者是自簽名的根證書。這里我們生成一個自簽名的根證書。
首先我們需要往配置文件裡面添加一些信息,如下所示,節名和命令行工具的命令req一樣。我們把所有必要的信息都寫進配置,而不是在命令行輸入,這是唯一指定X.509v3擴展的方式,也能讓我們對如何創建根證書有個清晰的把握。
[ req ]
default_bits = 2048
default_keyfile = /var/MyCA/private/cakey.pem
default_md = md5
prompt = no
distinguished_name = root_ca_distinguished_name
x509_extensions = root_ca_extensions
[ root_ca_distinguished_name ]
commonName = My Test CA
stateOrProvinceName = HZ
countryName = CN
emailAddress = [email protected]
organizationName = Root Certification Authority
[ root_ca_extensions ]
basicConstraints = CA:true
萬事俱備,我們可以生成根證書了。注意設置好環境變數OPENSSL_CONF。
$ openssl req -x509 -newkey rsa -out cacert.pem -outform PEM -days 356
註:「-days 356「控制有效期限為365天,默認為30天。
驗證一下我們生成的文件。
$ openssl x509 -in cacert.pem -text -noout
(3) 給客戶頒發證書
在給客戶頒發證書之前,需要客戶提供證書的基本信息。我們另外開啟一個終端窗口,使用默認的OpenSSL配置文件(不要讓之前的OPENSSL_CONF干擾我們,那個配置是專門用來生成根證書的)。
命令和我們生成根證書的類似,都是req,不過需要提供一些額外的信息。如下:
$ openssl req -newkey rsa:1024 -keyout testkey.pem -keyform PEM -out testreq.pem -outform PEM
有兩次提示要口令,第一次的口令用來加密私鑰匙testkey.pem,第二次口令一般被OpenSSL忽略。
結果生成兩個文件:testkey.pem,私鑰匙;testreq.pem,請求信息,其中包括公鑰匙。
我們來看看testreq.pem都有哪些信息?
$ openssl req -in testreq.pem -text -noout
現在,我們可以把testreq.pem提交給我們的CA生成證書了。
為了方便起見,我們假定testreq.pem在//var/MyCA/private/中。
$ openssl ca -in testreq.pem
有三次提示,一次是問你CA的私鑰匙密碼,兩次是確認,輸出的結果就是為客戶頒發的證書。
可以通過batch選項取消命令提示,可通過notext選項取消證書的輸出顯示。
此外,還可以一次給多個客戶頒發證書,方法是用 infiles選項替換in選項,不過這個選項必須放在最後,因為此後的任何字元均被處理為文件名稱列表。
生成的證書放在certs目錄,同時index.txt和serial的內容都發生了改變。
publicdoubleside=10.0;//去掉static
6. 關於S60V3手機的『根證書』『17項許可權證書』『19項許可權證書』『破解補丁』解釋一下!謝謝!
以下是我的轉載:(有你問的解答)
破解後話:許可權、破解、證書、病毒逐一解釋明白!(明白的直接跳過)
S60 V3系統就像一個寶藏,有20個秘室(具體請看後面),秘室是上鎖的!所謂的破解就是打開所有的秘室,大家可以自由進入!這個就是關閉許可權校驗!一個程序要進入這個寶藏,證書就是開啟這些寶藏的鑰匙!有些軟體要需要進入17個秘室就要17把鑰匙!而一個證書包含多少個許可權就對應多少把鑰匙!對於沒有證書的人,我們需要把寶藏的鎖(根證書)換成自己的鎖,同時給這把鎖配製一把萬能鑰匙,就可以打開所有的秘室了!這個就是關閉證書校驗!
這里要澄清一個誤解,很多人把證書和簽名看成了一回事,大概主要是因為證書比較難獲得,而Key容易得到,因此忽略了私鑰的重要性。實質上就加密原理而言,私鑰比公鑰更重要。證書實質上是經過認證機構簽名後的公鑰,它可以而且應該是公開的,合適的不可逆加密演算法使得很難從公鑰得道私鑰。從理論上和實際上講,破解許可權後,我們得到了NOKIA簽名的根證書,但是上無法得到私鑰,就簽名而言毫無意義。將NOKIA的根證書(寶藏的鎖)換成我們自己做的根證書(自己的鎖)。現在(我們不再需要開發者證書為程序自簽名),這些程序只需要簽上通用證書(萬能鑰匙)就能給已破解的手機使用了.破解後有了Allfiles能力後能自由進出系統目錄讀寫/刪除/修改,這能力能輕易提取原本受保護的手機內容c。現在很多軟體包括通話背景音,隨機鈴聲這些大家期待已久的軟體也都可以通過簽上通用證書(萬能鑰匙)給已破解的手機使用了!
簽名是什麼?簽名就是把你自己的手機串號寫入你要安裝的軟體里,一一對應,給A手機用戶簽名的軟體其他用戶就不可以用了,會出現證書錯誤的提示.軟體有了這把鑰匙(證書),就可以安裝到手機系統里了(進入寶藏了).這把鑰匙以前是塞班免費發給每個手機的,現在是是通過publisher ID才可以申請到一個最多1000個手機通用的證書(鑰匙),二樓的教程是在把門鎖換了的基礎上給了大家一把通用的萬能鑰匙!
當然鎖和鑰匙我都給出了,基於這些東西當然也可以編寫出相應的病毒了!(好象大家對這個最關心!)目前來說是不存在S60 V3病毒的!病毒也是一種程序,電腦PC上的病毒對手機沒有用,N72以前那些S60 V2系統的病毒對於S60 V3系統的是沒有任何作用的!現在唯一的病毒就是根據我這里給出的萬能鑰匙編寫出來的只能用於用我這種方法破解了的手機!(對於沒有破解的手機沒有任何威脅!)對於這個問題,當然不是沒有可能,只要大家不下載未經過各大論壇測試使用的軟體就可以了!
當然,最安全的解決辦法就是自己製作這把鎖
20項證書許可權能力:
(1)NetworkServices:用於使用移動網路。
(2)LocalServices:用於通過U*、紅外和藍牙發送或接收消息。
(3)ReadUserData:准許讀取用戶數據。
(4)WriteUserData:准許寫入用戶數據。
(5)Location:准許訪問手機的位置信息。
(6)UserEnvironment:准許訪問用戶及其附近環境的實時保密信息。
(7)PowerMgmt:准許在系統中中斷任何進程或者轉換機器狀態。
(8)SwEvent:准許生成或者捕獲鍵盤以及筆輸入事件。
(9)ReadDeviceData:准許讀取系統設備驅動數據。
(10)WriteDeviceData:准許寫入系統設備驅動數據。
(11)SurroundingsDD:准許訪問提供外圍設備輸入信息的邏輯設備驅動。
(12)TustedUI:區分」normal」應用和」trusted」應用的UI。
(13)ProtServ:准許伺服器應用可以用一個受保護的名字進行注冊。
(14)NetworkControl:准許修改或者訪問網路協議控制。
(15)MultimediaDD:准許對所有多媒體設備驅動的訪問。
(16)CommDD:准許訪問通信設備驅動。
(17)DiskAdmin:准許進行硬碟管理操作,例如格式化驅動器。
(18)DRM:准許訪問DRM保護的內容。
(19)TCB:准許在終端中訪問/*s以及/resource目錄。
(20)AllFiles:准許系統中的所有文件可見,可對在/private下的文件進行寫操作。
"個人開發證書"是具有前面13項功能的證書。"PublisherID證書"是具有前面17項的能力的證書。以前塞班免費給的證書都是13個許可權,現在各大論壇及淘寶商家發的就是17個許可權的,如今前五次內測版A4 有19個許可權(除TCB外的所有許可權)!理由是所有程序都需要輸入法,故輸入法DLL需要被所有程序載入。而根證書有20項許可權。
轉載自 wjq135寒冰冷雨風
----------------
下面是有關破解:
http://bbs.tompda.com/thread-2174879-1-1.html
7. 網路里的一個問題。windows證書的使用和ssl。這個是什麼意思啊
呵呵,ie7確實提高了安全性,但隨之而來確實有很多麻煩,你看看下面這些肯定對你有幫助的。我曾經就因為SSL 2.0沒有開啟而打不開,lz好好看看吧
ie7瀏覽器是伴隨著Vista操作系統而誕生的,不過微軟也發布了針對XP系統的IE7瀏覽器版本。不過不管是Vista系統還是XP系統下的IE7,由於他的安全防範意識有很大提高,對於非法站點和安全加密站點的過濾都比較苛刻,所以在IE7下訪問https這種通過SSL協議加密的網站都會出現故障。今天我們就來一步步解決此問題。
一、XP系統下IE7訪問https站點故障排除功略:
默認情況我們在XP系統下通過XP版本的IE7瀏覽器訪問https加密的站點都會出現「此網站的安全證書有問題,該網站提供的安全證書不是由受信任的證書辦法機構頒發的,安全證書問題可能顯示試圖欺騙您或截獲您向伺服器發送的數據」,我們必須再次點「繼續瀏覽此網站(不推薦)」才能查看頁面信息。
那麼如何來解決這個問題呢?畢竟每次訪問Https站點都需要重復點「繼續瀏覽此網站(不推薦)」,在操作上帶來很大的麻煩。下面我們就通過安裝證書步驟來解決此問題。
第一步:當我們用IE7瀏覽Https站點後會在地址欄右邊出現一個紅色的「證書錯誤」的提示,我們點該紅色按鈕,然後選擇「查看證書」。
第二步:在打開的「查看證書」窗口中的「常規」標簽中點右下角的「安裝證書」按鈕。
第三步:出現「證書導入向導」後點「下一步」按鈕繼續。
第四步:選擇證書存儲的系統區域,通過「瀏覽」按鈕設置將證書保存為「受信任的根證書頒發機構」。
第五步:之後在安全警告窗口中選擇「是」按鈕來安裝該證書。
第六步:設置完畢後我們再次訪問該https站點就不會出現任何問題,也不會再出現「此網站的安全證書有問題,該網站提供的安全證書不是由受信任的證書辦法機構頒發的,安全證書問題可能顯示試圖欺騙您或截獲您向伺服器發送的數據」的錯誤提示了。
二、Vista系統下IE7訪問https站點故障排除功略:
在Vista系統下使用IE7瀏覽器訪問https站點也會出現「此網站的安全證書有問題,該網站提供的安全證書不是由受信任的證書辦法機構頒發的,安全證書問題可能顯示試圖欺騙您或截獲您向伺服器發送的數據」的錯誤提示,但是他的解決步驟卻和XP下IE7有很大區別。這是因為在Vista系統中IE7訪問https證書查看里沒有安裝的提示,錯誤信息提示「由於CA根證書不在受信任的根證書頒發機構存儲區中,所以他不受信任「。
那麼該如何解決呢?至今筆者還沒有發現可以通過調整IE7瀏覽器的設置來解決此問題,不過可以通過證書導入來解決。
第一步:首先打開IE7瀏覽器,然後通過「工具->internet選項」打開屬性設置窗口,並選擇「內容」標簽,直接點「證書」標簽。
第二步:選擇要安裝的證書類型時點「受信任的根證書頒發機構」,接下來點左下角的「導入」按鈕。
第三步:這時就需要我們在「要導入的文件」設置窗口中找到該網站的證書文件。至於這個證書文件如何獲得,筆者的方法是通過在別的瀏覽器(例如IE 6或XP系統IE 7)中將該網站對應的證書以文件的形式導出即可,接下來回到Vista系統中導入此文件即可。
第四步:在證書存儲設置處和上面介紹的方法一樣,選擇將所有的證書放入下列存儲——受信任的根證書頒發機構。
第五步:在安裝該證書的窗口中點「是」按鈕即可。
第六步:所有工作完成後會出現導入成功的提示,以後我們再訪問https加密的站點就不會出現上面的錯誤提示了。
小提示:如果修改設置後問題依然沒有解決,那麼我們還應該在IE瀏覽器的internet選項中高級標簽下的「使用SSL 2.0」勾選,因為默認情況下IE7把SSL 2.0協議過濾掉了,如果https網站恰巧只能使用SSL 2.0協議訪問就會出現錯誤提示。
三、IE 7下HTTPS網站訪問故障解決功略:
經過總結和實驗筆者發現在IE 7中訪問HTTPS站點確實會出現這樣或那樣的問題,具體表現如下。
(1)SSL 2.0沒有開啟而出現錯誤:
現象:當瀏覽一個僅SSLv2的站點時,顯示一個錯誤頁面。
原因:Internet Explorer 7中默認關閉了SSLv2協議。SSLv2協議存在已知的安全問題,已被SSLv3和TLSv1協議替代。
解決辦法:在IE 7屬性中高級標簽下開啟SSL 2.0,讓瀏覽器支持該協議。
(2)https站點密碼驗證使用弱口令:
現象:在Windows Vista上瀏覽一個被配置成使用弱密碼(40位/56位加密)的HTTPS站點時,顯示一個錯誤頁面。
原因:在Windows Vista中,默認已經關閉了弱密碼,僅開啟強密碼。
解決辦法:對於訪問者沒有辦法解決,只能等待https站點管理員修改驗證使用的弱口令。
(3)站點證書錯誤:
現象:當瀏覽一個顯示包含錯誤的安全證書的HTTPS站點時,顯示一個錯誤頁面。
原因:為了改進安全性和用戶體驗,IE7阻止了訪問顯示包含錯誤的安全證書的HTTPS站點。這個改變代替了出現在IE6中的對話框。
解決辦法:如果站點的證書已過期,則沒有處理方法。聯系站點的所有者,並要求他們更新證書。
(4)https頁面引入http頁面信息:
現象:當瀏覽一個含有HTTPS和HTTP混合內容的頁面時,出現一個信息欄,代替Internet Explorer 6或更早版本中出現的對話框。
原因:為了改進安全性和用戶體驗,IE7默認阻止了在HTTPS頁面顯示HTTP內容。這個改變代替了出現在IE6中的對話框。
解決辦法:通過瀏覽器的internet選項的「安全」標簽,選擇internet圖標,然後點「自定義級別」,向下滾動到Miscellaneous部分,調整Display mixed content設置的值。
(5)證書無效的錯誤:
現象:當在Windows Vista上瀏覽HTTPS站點時,出現一個針對證書撤回的檢查,以決定證書是否仍然有效。
原因:Windows Vista中對性能作出的改進以及對OCSP協議的支持,通過默認開啟撤回檢查,使得Windows Vista上的IE7安全性得到了提升。
解決辦法:如果該問題影響了實際環境的性能問題,可以關閉證書撤回的選項。通過internet選項的「高級」標簽里「安全」下的「檢查伺服器證書吊銷」,將其前面的對勾去掉。
四、總結:
至此我們就完成了幾乎所有IE7瀏覽器訪問https加密的站點出錯的問題,各位IT168的讀者可以根據自己的實際錯誤提示和上面的多個辦法來解決故障。
8. https證書生成方法,怎麼生成https證書
HTTPS認證、復HTTPS證書,可以在制淘寶裡面找到Gworg申請。
申請HTTPS證書:
確定並且列出具體需要的域名。
進入淘寶中找到Gworg並且選擇HTTPS證書。
根據提示完成HTTPS域名認證。
獲得HTTPS證書並且安裝到伺服器。
解決辦法:Gworg認證並且活動和HTTPS證書。
9. https://60.216.53.122 打開後顯示「證書錯誤」是怎麼一回事 無法載入
XP系統下IE7訪問https站點故障排除:
默認情況我們在XP系統下通過XP版本的IE7瀏覽器訪問https加密的站點都會出現「此網站的安全證書有問題,該網站提供的安全證書不是由受信任的證書辦法機構頒發的,安全證書問題可能顯示試圖欺騙您或截獲您向伺服器發送的數據」,我們必須再次點「繼續瀏覽此網站(不推薦)」才能查看頁面信息。
第一步:當我們用IE7瀏覽Https站點後會在地址欄右邊出現一個紅色的「證書錯誤」的提示,我們點該紅色按鈕,然後選擇「查看證書」。
第二步:在打開的「查看證書」窗口中的「常規」標簽中點右下角的「安裝證書」按鈕。
第三步:出現「證書導入向導」後點「下一步」按鈕繼續。
第四步:選擇證書存儲的系統區域,通過「瀏覽」按鈕設置將證書保存為「受信任的根證書頒發機構」。
第五步:之後在安全警告窗口中選擇「是」按鈕來安裝該證書。
第六步:設置完畢後我們再次訪問該https站點就不會出現任何問題,也不會再出現「此網站的安全證書有問題,該網站提供的安全證書不是由受信任的證書辦法機構頒發的,安全證書問題可能顯示試圖欺騙您或截獲您向伺服器發送的數據」的錯誤提示了。
Vista系統下IE7訪問https站點故障排除:
在Vista系統下使用IE7瀏覽器訪問https站點也會出現「此網站的安全證書有問題,該網站提供的安全證書不是由受信任的證書辦法機構頒發的,安全證書問題可能顯示試圖欺騙您或截獲您向伺服器發送的數據」的錯誤提示,但是他的解決步驟卻和XP下IE7有很大區別。這是因為在Vista系統中IE7訪問https證書查看里沒有安裝的提示,錯誤信息提示「由於CA根證書不在受信任的根證書頒發機構存儲區中,所以他不受信任」。
那麼該如何解決呢?至今筆者還沒有發現可以通過調整IE7瀏覽器的設置來解決此問題,不過可以通過證書導入來解決。
第一步:首先打開IE7瀏覽器,然後通過「工具->internet選項」打開屬性設置窗口,並選擇「內容」標簽,直接點「證書」標簽。
第二步:選擇要安裝的證書類型時點「受信任的根證書頒發機構」,接下來點左下角的「導入」按鈕。
第三步:這時就需要我們在「要導入的文件」設置窗口中找到該網站的證書文件。至於這個證書文件如何獲得,筆者的方法是通過在別的瀏覽器(例如IE6或XP系統IE7)中將該網站對應的證書以文件的形式導出即可,接下來回到Vista系統中導入此文件即可。
第四步:在證書存儲設置處和上面介紹的方法一樣,選擇將所有的證書放入下列存儲——受信任的根證書頒發機構。
第五步:在安裝該證書的窗口中點「是」按鈕即可。
第六步:所有工作完成後會出現導入成功的提示,以後我們再訪問https加密的站點就不會出現上面的錯誤提示了。
如果修改設置後問題依然沒有解決,那麼我們還應該在IE瀏覽器的internet選項中高級標簽下的「使用SSL2.0」勾選,因為默認情況下IE7把SSL2.0協議過濾掉了,如果https網站恰巧只能使用SSL2.0協議訪問就會出現錯誤提示。
三、IE7下HTTPS網站訪問故障解決:
經過總結和實驗筆者發現在IE7中訪問HTTPS站點確實會出現這樣或那樣的問題,具體表現如下。
(1)SSL2.0沒有開啟而出現錯誤:
現象:當瀏覽一個僅SSLv2的站點時,顯示一個錯誤頁面。
原因:InternetExplorer7中默認關閉了SSLv2協議。SSLv2協議存在已知的安全問題,已被SSLv3和TLSv1協議替代。
解決辦法:在IE7屬性中高級標簽下開啟SSL2.0,讓瀏覽器支持該協議。
(2)https站點密碼驗證使用弱口令:
現象:在WindowsVista上瀏覽一個被配置成使用弱密碼(40位/56位加密)的HTTPS站點時,顯示一個錯誤頁面。
原因:在WindowsVista中,默認已經關閉了弱密碼,僅開啟強密碼。
解決辦法:對於訪問者沒有辦法解決,只能等待https站點管理員修改驗證使用的弱口令。
(3)站點證書錯誤:
現象:當瀏覽一個顯示包含錯誤的安全證書的HTTPS站點時,顯示一個錯誤頁面。
原因:為了改進安全性和用戶體驗,IE7阻止了訪問顯示包含錯誤的安全證書的HTTPS站點。這個改變代替了出現在IE6中的對話框。
解決辦法:如果站點的證書已過期,則沒有處理方法。聯系站點的所有者,並要求他們更新證書。
(4)https頁面引入http頁面信息:
現象:當瀏覽一個含有HTTPS和HTTP混合內容的頁面時,出現一個信息欄,代替InternetExplorer6或更早版本中出現的對話框。
原因:為了改進安全性和用戶體驗,IE7默認阻止了在HTTPS頁面顯示HTTP內容。這個改變代替了出現在IE6中的對話框。
解決辦法:通過瀏覽器的internet選項的「安全」標簽,選擇internet圖標,然後點「自定義級別」,向下滾動到Miscellaneous部分,調整Displaymixedcontent設置的值。
(5)證書無效的錯誤:
現象:當在WindowsVista上瀏覽HTTPS站點時,出現一個針對證書撤回的檢查,以決定證書是否仍然有效。
原因:WindowsVista中對性能作出的改進以及對OCSP協議的支持,通過默認開啟撤回檢查,使得WindowsVista上的IE7安全性得到了提升。
解決辦法:如果該問題影響了實際環境的性能問題,可以關閉證書撤回的選項。通過internet選項的「高級」標簽里「安全」下的「檢查伺服器證書吊銷」,將其前面的對勾去掉。
總結:以上是由於IE7安全性高,導致的訪問https加密的站點出錯的問題,希望能幫助大家,也希望大家好好看看!
10. 怎麼破解openssl 生成的證書
使用OpenSSL工具生成根證書與應用證書方法:1、生成頂級CA的公鑰證書和私鑰文件,有效期10年(RSA1024bits,默認)opensslreq-new-x509-days3650-keyoutCARoot1024.key-outCARoot1024.crt2、為頂級CA的私鑰文件去除保護口令opensslrsa-inCARoot1024.key-outCARoot1024.key3、生成頂級CA的公鑰證書和私鑰文件,有效期15年(RSA2048bits,指定)opensslreq-newkeyrsa:2048-x509-days5480-keyoutCARoot2048.key-outCARoot2048.crt4、為頂級CA的私鑰文件去除保護口令opensslrsa-inCARoot2048.key-outCARoot2048.key5、為應用證書/中級證書生成私鑰文件opensslgenrsa-outapp.key20486、根據私鑰文件,為應用證書/中級證書生成csr文件(證書請求文件)opensslreq-new-keyapp.key-outapp.csr7、使用CA的公私鑰文件給csr文件簽名,生成應用證書,有效期5年opensslca-inapp.csr-outapp.crt-certCARoot1024.crt-keyfileCARoot1024.key-days1826-policypolicy_anything8、使用CA的公私鑰文件給csr文件簽名,生成中級證書,有效期5年opensslca-extensionsv3_ca-inapp.csr-outapp.crt-certCARoot1024.crt-keyfileCARoot1024.key-days1826-policypolicy_anything以上是生成根證書與應用證書過程中要用到的所有命令,根據生成目標不同,分為三組。其中,前面兩組都用於生成自簽名的頂級CA(區別只在於密鑰長度不同),實際應用中只需根據需求選擇一組即可。最後一組用於生成非自簽名的證書,包括中級證書與應用證書。所謂中級證書,是具有繼續頒發下級證書許可權的子CA,而本文中所說的應用證書,特指不能用來繼續頒發下級證書,只能用來證明個體身份的證書。頂級CA在簽發二者的時候,只是多少一個-extensionsv3_ca選項的區別,這個選項賦予被簽發的證書繼續簽發下級證書的權力。