Q:
SSL是什麼?
A:
SSL是Secure Socket Layer(安全套接層協定)的縮寫,可以在Internet上提供秘密性傳輸。Netscape公司在推出第一個Web浏覽器的同時,提出了SSL協定标準,目前已有3.0版本。SSL采用公開密鑰技術。其目标是保證兩個應用間通信的保密性和可靠性,可在伺服器端和使用者端同時實作支援。
SSL有什麼優勢?
利用公開密鑰技術的SSL協定已成為Internet上保密通訊的工業标準。安全套接層協定能使C/S應用之間的通信不被"中間人"竊聽,并且始終對伺服器進行認證,還可選擇對使用者進行認證。SSL協定要求建立在可靠的傳輸層協定(TCP)之上。SSL協定的優勢在于它是與應用層協定獨立無關的,高層的應用層協定(例如:HTTP,FTP,TELNET等)能透明地建立于SSL協定之上。
SSL具體特性有那些?
SSL協定在應用層協定通信之前(SSL的工作區域是在應用層與傳輸層之間增加了半個層,原因是有些協定是不需要加密的)就已經完成加密算法、通信密鑰的協商及伺服器認證工作。在此之後應用層協定所傳送的資料都會被加密,進而保證通信的私密性。通過以上叙述,SSL協定提供的安全信道有以下三個特性:
1、資料的保密性
資訊加密就是把明文檔案利用加密算法轉換成密文的檔案以實作資料的保密。加密的過程需要用到私匙來加密資料然後再通過公鑰解密,雖然公鑰是公開的,但沒有了私鑰,就無法解開加密後的資料。資料加密之後,加密過的資料可以公開地傳送。
2、資料的一緻性
加密也能保證資料的一緻性。例如:消息驗證碼(MAC),能夠校驗使用者提供的加密資訊,接收者可以用MAC來校驗加密資料,保證資料在傳輸過程中沒有被篡改過。
3、身份認證
加密的另外一個用途是用來作為個人的認證,使用者的公匙可以作為他的安全驗證的辨別。SSL是利用公開密鑰的加密技術(RSA)來作為使用者端與伺服器端在傳送機密資料時的加密通訊協定,當對方接收到資料後,利用發送方的公鑰進行解密後擷取資料。
(注:公鑰是從私鑰中提取出來的)
SSL與Openssl有什麼關系?
ssl是一種應用,表示安全的套接字層,是為那些明文應用提供加密機制的應用,openssl是一個實作該協定的庫,當然還實作了其他很多東西,并且是open source,雖然Openssl作為SSL的一個庫,但就其自身功能也是相當強大的。
二、Openssl基本組成與應用
1、組成
libcrypto:通用功能的加密庫
libssl:用于實作TLX/SSL的功能
openssl:多功能指令工具,用于生成密鑰,建立數字證書,手動加密解密資料
2、常用指令
1)、Message Digest commands(資訊摘要算法也可以叫單向加密算法)
單向加密的算法有:md2、md4、md5、rmd160、sha、sha1
指令:
openssl dgst [-md5|-md4|-md2|-sha1|-sha|-mdc2|-ripemd160|-dss1][-out filename]
/path/to/somefile
作用:用于實作在網絡通信中保證所傳輸的資料完整性
例:
<a href="http://s3.51cto.com/wyfs02/M02/22/4C/wKiom1MaLyng6iBnAASmY31UJK4088.jpg" target="_blank"></a>
2)、Cipher commands(對稱加密)
常用算法有:des、des3、base64等
例:
1
2
3
4
5
6
7
<code>[root@localhost tmp]</code><code>#openssl enc -base64 -a -salt -in /etc/passwd -out /tmp/passwd.cipher</code>
<code>[root@localhost tmp]</code><code># openssl enc -d -base64 -a -salt -in /tmp/passwd.cipher -out /tmp/passwd</code>
<code>#-base64算法加密</code>
<code>#-d表示解密</code>
<code>#-a -salt表示加鹽</code>
<code>#-in 對那個檔案操作</code>
<code>#-out 輸出到那裡</code>
注:
使用者認證:公鑰加密,私鑰解密。
數字簽名:私鑰加密,公鑰解密。
3)、證書(x509格式):
公鑰和有效期限
持有者的個人合法身份資訊(一般是伺服器主機名,可以同名)
證書的使用方式
CA的資訊
CA的數字簽名
獲驗證書(CA)
1、先在自己的伺服器上生成公鑰與私鑰
2、用公鑰生成一個證書簽署請求(CSR)
組成: (組織機構名稱,詳細位址,郵件位址)
3、統一标準(x509)
4、當經過詳細的認證之後會發一個證書(CRT)
4)、基于openssl實作CA發放(配置檔案存于/etc/pki/tls/openssl.cnf)
首先CA SERVER自簽名
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<code>[root@localhost tmp]</code><code># cd /etc/pki/CA/</code>
<code>[root@localhost CA]</code><code># (umask 077;openssl genrsa 1024 > private/cakey.pem )#生成私鑰</code>
<code>[root@localhost CA]</code><code>#touch index.txt serial #建立索引與序号檔案</code>
<code>[root@localhost CA]</code><code>#mkdir certs newcerts crl</code>
<code>[root@localhost CA]</code><code>#echo 01 >serial #序号啟始點</code>
<code>[root@localhost CA]</code>
<code># openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3650 #申請證書</code>
<code>You are about to be asked to enter information that will be incorporated</code>
<code>into your certificate request.</code>
<code>What you are about to enter is what is called a Distinguished Name or a DN.</code>
<code>There are quite a few fields but you can leave some blank</code>
<code>For some fields there will be a default value,</code>
<code>If you enter </code><code>'.'</code><code>, the field will be left blank.</code>
<code>-----</code>
<code>Country Name (2 letter code) [XX]:cn </code><code>#國家</code>
<code>State or Province Name (full name) []:henan </code><code>#省份</code>
<code>Locality Name (eg, city) [Default City]:luoyao </code><code>#城市</code>
<code>Organization Name (eg, company) [Default Company Ltd]:essun</code>
<code>#公司名Organizational Unit Name (eg, section) []:essun.com #組織</code>
<code>Common Name (eg, your name or your server's </code><code>hostname</code><code>) []:www.essun.com</code>
<code>#伺服器名(此處特别重要)</code>
<code>Email Address []:[email protected]</code>
<code>#郵件位址</code>
用戶端申請
#(umask 077; openssl genrsa -out www.key 1024)(生成密鑰,儲存至應用此證書的服務的
配置檔案目錄下)
#openssl req -new -key www.key -out www.csr (發起請求)
開始申請
把CSR檔案傳送到CA伺服器,由CA伺服器簽置證書:
#openssl ca -in www.csr -out www.crt
然後将www.crt 傳送回用戶端。
吊銷證書
#openssl ca -revoke /path/to/file.crt
本文轉自 jinlinger 51CTO部落格,原文連結:http://blog.51cto.com/essun/1370129,如需轉載請自行聯系原作者