使用OpenSSL快速創建TLS/SSL證書

使用OpenSSL快速創建TLS/SSL證書

前言

在配置Apache,FTP和Email郵件服務器的時候。為了實現安全傳輸,往往需要用到TLS或SSL服務來為服務器端和客戶端建立的連接加密。不熟悉的話,每次配置安裝TLS/SSL都得找一番資料。趁有時間索性寫一個關于TLS/SSL的快速文檔。方便自己的同時,也方便別人。

理論描述

SSL(Secure Sockets Layer 安全套接層),及其繼任者傳輸層安全(Transport Layer Security,TLS)用于在兩個通信應用程序之間提供保密性和數據完整性的一種安全協議。TLS與SSL在傳輸層對網絡連接進行加密。

TLS/SSL協議提供的服務主要有:

    認證用戶和服務器,確保數據發送到正確的客戶機和服務器;  
    加密數據以防止數據中途被竊取;
    維護數據的完整性,確保數據在傳輸過程中不被改變。

操作步驟

準備工作

檢查是否正確安裝openssl軟件包

[root@nms ~]# rpm -q openssl
openssl-1.0.0-25.el6_3.1.x86_64
創建一個新的CA

[root@nms ~]# /etc/pki/tls/misc/CA -newca
CA certificate filename (or enter to create)  ##按Enter鍵

Making CA certificate ...
Generating a 2048 bit RSA private key
...................................+++
..+++
writing new private key to '/etc/pki/CA/private/./cakey.pem'  ##生成CA的密鑰
Enter PEM pass phrase:            ##輸入一個cakey.pem私鑰保護密碼
###以后,每一次訪問cakey.pem都需要輸入此密碼
###輸入密碼不回顯。
###一定要記住了,不然沒法給其他主機簽證書。
Verifying - Enter PEM pass phrase:    ##重新輸入,以驗證密碼
-----
##接下來給CA自己創建一個證書
###填寫申請信息。
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) [XX]:CN    ##CA所在國家
State or Province Name (full name) []:Beijing   ##省份
Locality Name (eg, city) [Default City]:Beijing   ##城市
Organization Name (eg, company) [Default Company Ltd]:Xiyang Liu Group Co., Ltd 
###CA公司信息,誰在運作這個CA,誰為信用承保。
Organizational Unit Name (eg, section) []:NIC  ##部門
Common Name (eg, your name or your server s hostname) []:ca.xiyang-liu.com 
###管理者或者服務器名
Email Address []:manager@ca.xiyang-liu.com
###管理郵箱,或者投訴郵箱,所有簽過的證書都有這項信息。
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:  ##加密CA證書的密碼,也要記住,可不輸入
An optional company name []:  ##可以不輸入
Using configuration from /etc/pki/tls/openssl.cnf 
##CA給自己簽名
Enter pass phrase for /etc/pki/CA/private/./cakey.pem:   ##輸入cakey保護密碼
Check that the request matches the signature  ##檢查請求文件的完整性
Signature ok
Certificate Details:
        Serial Number:
            b9:48:b2:aa:5b:76:6c:23
        Validity
            Not Before: Dec  6 12:06:42 2012 GMT
            Not After : Dec  6 12:06:42 2015 GMT
        Subject:
            countryName                = CN
            stateOrProvinceName        = Beijing
            organizationName           = Xiyang Liu Group Co., Ltd
            organizationalUnitName     = NIC
            commonName                 = ca.xiyang-liu.com
            emailAddress               = manager@ca.xiyang-liu.com
        X509v3 extensions:
            X509v3 Subject Key Identifier: 
                EC:1C:4B:FB:82:DB:9C:86:.....47:0F:91:A5:6F:6F:32
            X509v3 Authority Key Identifier: 
                keyid:EC:1C:4B:FB:82:D.......2:C8:47:0F:91:A5:6F:6F:32

            X509v3 Basic Constraints: 
                CA:TRUE
Certificate is to be certified until Dec  6 12:06:42 2015 GMT (1095 days)

Write out database with 1 new entries
Data Base Updated
創建CA就結束了。總體就三個過程。1.生成一個“絕密”的密鑰。2.創建一個簽名申請文件。3.自己給自己簽名,生成一個標記CA的證書。

上述操作在CA服務器上完成。

CA服務器就是專管授權簽名的服務器。簡單說,它就是一個說一不二的“老大”。它要為簽過的證書承保。如果簽過的顧客干壞事了,它有連帶責任。所以讓CA簽名都是收錢的。收的錢越多,從某種程度上說,越有說服力。不收錢的CA,生存不下去,也沒人看得起。非常有名的CA有verisign。

創建簽名申請

創建一個簽名申請,分兩個過程。創建一個自己的密鑰,然后提交給CA,請求簽名。

[root@nms ~]# openssl genrsa -des3 -out my-server.key 1024 
### 1024:表示生成DES3加密的1024位的密碼
Generating RSA private key, 1024 bit long modulus
......++++++
......................++++++
e is 65537 (0x10001)
Enter pass phrase for my-server.key:         ##輸入一個私鑰保護密碼
Verifying - Enter pass phrase for my-server.key:      ##驗證輸入
從私鑰中生成公鑰:(可選,證書里就有,一般不用單獨導出來)

[root@nms ~]# openssl rsa -in my-server.key -pubout > my-server-public.key
Enter pass phrase for my-server.key:   ##輸入剛才設定的私鑰保護密碼
writing RSA key
創建證書請求

[root@nms ~]# openssl req -new -key my-server.key -out my-server.csr
Enter pass phrase for my-server.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.
-----
##下面的信息是證書請求方的信息,不一定和CA相同。
###兩者的Common Name一定不能相同,否則CA不能給這個請求簽名
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:Beijing  
## State or Province Name必須和CA一致,否則無法簽名。
Locality Name (eg, city) [Default City]:Beijing
Organization Name (eg, company) [Default Company Ltd]:Xiyang Liu Group Co., Ltd
## Organization Name必須和CA一致,否則無法簽名。
Organizational Unit Name (eg, section) []:NIC
Common Name (eg, your name or your server s hostname) []:nms.xiyang-liu.com 
Email Address []:manager@nms.xiyang-liu.com

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:PASSW0D1  #可不輸入
An optional company name []:
兩步并作一步走,使用如下命令直接創建一個全新的申請:

openssl req -new -nodes -newkey rsa:1024 -keyout my-server-key.key -out my-server-req.csr -days 365
-nodes參數表示不加密私鑰。如果不添加nodes參數,以后每次使用私鑰時都必須輸入密碼(如Apache每次重啟)
-newkey rsa:1024 指定密鑰長度
-days 365 設定證書有效期為一年,而不是默認的30天。
填寫信息,命令執行完畢,會生成兩個文件。自己放好my-server-key.key。把my-server-req.csr發給CA請求簽名。不差錢可以發給verisign哦。

在使用證書的主機上操作。可以和CA是一個主機。

CA簽名請求

[root@nms ~]# openssl ca -in my-server-req.csr -out my-server-req.crt
Using configuration from /etc/pki/tls/openssl.cnf
Enter pass phrase for /etc/pki/CA/private/cakey.pem:  ##輸入cakey保護密碼
Check that the request matches the signature
Signature ok
Certificate Details:
       Serial Number:
            b9:48:b2:aa:5b:76:6c:24
        Validity
            Not Before: Dec  6 13:51:13 2012 GMT
            Not After : Dec  6 13:51:13 2013 GMT
        Subject:
            countryName               = CN
            stateOrProvinceName       = Beijing
            organizationName          = Xiyang Liu Group Co., Ltd
            organizationalUnitName    = NIC
            commonName                = nms.xiyang-liu.com
            emailAddress              = manager@nms.xiyang-liu.com
        X509v3 extensions:
            X509v3 Basic Constraints: 
                CA:FALSE
            Netscape Comment: 
                OpenSSL Generated Certificate
            X509v3 Subject Key Identifier: 
                36:C4:AB:56:5............5:C2:84:A6:86:15
            X509v3 Authority Key Identifier: 
                keyid:EC:1C:4B...........F:91:A5:6F:6F:32

Certificate is to be certified until Dec  6 13:51:13 2013 GMT (365 days)
Sign the certificate? [y/n]:y

1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated

創建自簽證書

如果懶到連CA都不想創建,或者不需要建。就執行下面命令直接創建自簽證書:
openssl req -x509 -nodes -newkey rsa:1024 
-keyout my-server-key.key -out my-server.crt

命令執行結束將只生成crt證書和私鑰文件,沒有CA的證書。可用于傳遞電子郵件。

使用生成的證書

使用時,對于服務器往往需要CA的證書、密鑰文件和簽名證書。我們的CA不受系統信任,系統不會集成CA證書。所以需要指定。如果純粹是私人傳輸郵件加密用的,則完全何以使用自簽名證書。

FROM< http://www.cnblogs.com/littleatp/p/5878763.html >

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,546評論 6 533
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,570評論 3 418
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,505評論 0 376
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,017評論 1 313
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,786評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,219評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,287評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,438評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,971評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,796評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,995評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,540評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,230評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,662評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,918評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,697評論 3 392
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,991評論 2 374

推薦閱讀更多精彩內容