OpenSSL生成證書(自簽證書)--待續。。。


參考:
OpenSSL生成證書

ssl介紹

SSL證書是數字證書的一種,類似於駕駛證、護照和營業執照的電子副本。因爲配置在服務器上,也稱爲SSL服務器證書。
SSL 證書就是遵守 SSL協議,由受信任的數字證書頒發機構CA,在驗證服務器身份後頒發,具有服務器身份驗證和數據傳輸加密功能。
SSL證書通過在客戶端瀏覽器和Web服務器之間建立一條SSL安全通道(Secure socket layer(SSL)安全協議是由Netscape Communication公司設計開發。該安全協議主要用來提供對用戶和服務器的認證;對傳送的數據進行加密和隱藏;確保數據在傳送中不被改變,即數據的完整性,現已成爲該領域中全球化的標準。由於SSL技術已建立到所有主要的瀏覽器和WEB服務器程序中,因此,僅需安裝服務器證書就可以激活該功能了),即通過它可以激活SSL協議,實現數據信息在客戶端和服務器之間的加密傳輸,可以防止數據信息的泄露,保證了雙方傳遞信息的安全性,而且用戶可以通過服務器證書驗證他所訪問的網站是否是真實可靠。數字簽名又名數字標識、簽章 (即 Digital Certificate,Digital ID ),提供了一種在網上進行身份驗證的方法,是用來標誌和證明網絡通信雙方身份的數字信息文件,概念類似日常生活中的司機駕照或身份證。 數字簽名主要用於發送安全電子郵件、訪問安全站點、網上招標與投標、網上籤約、網上訂購、網上公文安全傳送、網上辦公、網上繳費、網上繳稅以及網上購物等安全的網上電子交易活動。
參考圖片

加密數據在通訊過程中如何防止數據不被竊取呢?

客戶端第一次給服務器發送請求的時候(拿到證書之前的那個請求),會在請求裏面放一個隨機數(比如叫A),服務器的返回證書的響應裏也會帶一個隨機數(比如叫B), 客戶端拿到證書後,會使用公鑰加密一個隨機數(比如叫C)發送給服務器,因此客戶端,服務器就有三個隨機數:A、B、C。雙方使用這些隨機數和一個相同的算法會生成一個密鑰,以後所有的通信都使用這個對稱密鑰來進行的。

一般情況下,這三個密鑰不可能同時被泄露的,因爲它是由三個隨機數隨機生成的。並且其中一個隨機數使用了公鑰加密的。因此是通過這種方式來保證數據不被竊取的。

上面都是在網上看到的一些概念性問題,簡單的理解下就好了,知道是這麼個概念就行了,而我們的openssl是SSL的實現版。因此openssl的作用避免信息被竊取到,它是通過上面的知識點來做到的。

openssl的應用場景:

在使用http網站中,我們經常看到網站會有一些廣告什麼的,這些廣告其實不是網站自己放上去的,而是中間的運營商在中間篡改了內容導致的。現在我們可以使用https技術(基於openssl)來對數據進行加密的。它能保證數據不被篡改。

OpenSSL介紹

openssl 是目前最流行的 SSL 密碼庫工具,其提供了一個通用、健壯、功能完備的工具套件,用以支持SSL/TLS 協議的實現。
基本功能
OpenSSL整個軟件包大概可以分成三個主要的功能部分:SSL協議庫、應用程序以及密碼算法庫。OpenSSL的目錄結構自然也是圍繞這三個功能部分進行規劃的。
作爲一個基於密碼學的安全開發包,OpenSSL提供的功能相當強大和全面,囊括了主要的密碼算法、常用的密鑰和證書封裝管理功能以及SSL協議,並提供了豐富的應用程序供測試或其它目的使用。
對稱加密
OpenSSL一共提供了8種對稱加密算法,其中7種是分組加密算法,僅有的一種流加密算法是RC4。這7種分組加密算法分別是AES、DES、Blowfish、CAST、IDEA、RC2、RC5,都支持電子密碼本模式(ECB)、加密分組鏈接模式(CBC)、加密反饋模式(CFB)和輸出反饋模式(OFB)四種常用的分組密碼加密模式。其中,AES使用的加密反饋模式(CFB)和輸出反饋模式(OFB)分組長度是128位,其它算法使用的則是64位。事實上,DES算法裏面不僅僅是常用的DES算法,還支持三個密鑰和兩個密鑰3DES算法。
非對稱加密
OpenSSL一共實現了4種非對稱加密算法,包括DH算法、RSA算法、DSA算法和橢圓曲線算法(EC)。DH算法一般用於密鑰交換。RSA算法既可以用於密鑰交換,也可以用於數字簽名,當然,如果你能夠忍受其緩慢的速度,那麼也可以用於數據加密。DSA算法則一般只用於數字簽名。
信息摘要
OpenSSL實現了5種信息摘要算法,分別是MD2、MD5、MDC2、SHA(SHA1)和RIPEMD。SHA算法事實上包括了SHA和SHA1兩種信息摘要算法。此外,OpenSSL還實現了DSS標準中規定的兩種信息摘要算法DSS和DSS1。

安裝OpenSSL

第一種

安裝openssl
tar zxvf openssl-1.1.1.tar.gz
如果沒有gcc就安裝gcc
./config --prefix=/usr/local --openssldir=/usr/local/openssl
make
make install 
修改OpenSSL庫的位置
ln -s /usr/local/lib64/libssl.so.1.1 /usr/lib64/libssl.so.1.1
ln -s /usr/local/lib64/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1

證書創建與配置加載

創建證書

[root@gitlab ~] mkdir -p /etc/gitlab/ssl
[root@gitlab ~] openssl genrsa -out /etc/gitlab/ssl/gitlab.example.com.key 2048 #生成一個本地私有密鑰

或者:

openssl genrsa -des3 -out server.key 2048
  • des3 是算法,2048位強度(爲了保密性)。 server.key 是密鑰文件名 -out的含義是:指生成文件的路徑和名稱。

查看剛剛生成的私鑰

openssl rsa -text -in server.key

創建證書籤名請求CSR文件

openssl req -new -key server.key -out server.csr
  • -key的含義是:指定ca私鑰
  • -out的含義是: server.csr 生成證書文件

運行如上命令後,生成CSR時會要求填入以下信息:

Country Name (2 letter code) []:CN            // 輸入國家代碼,中國填寫 CN
State or Province Name (full name) []:HangZhou      // 輸入省份,這裏填寫 HangZhou
Locality Name (eg, city) []:HangZhou           // 輸入城市,我們這裏也填寫 HangZhou
Organization Name (eg, company) []:tbj          // 輸入組織機構(或公司名,我這裏隨便寫個tbj)
Organizational Unit Name (eg, section) []:tbj       // 輸入機構部門
Common Name (eg, fully qualified host name) []:*.abc.com // 輸入域名,我這邊是 (*.abc.com) 
Email Address []:[email protected]           // 你的郵箱地址
 
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:123456              // 你的證書密碼,如果不想設置密碼,可以直接回車

查看csr文件如下命令:

openssl req -text -in server.csr -noout

生成CA證書

openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
  • x509的含義: 指定格式
  • -in的含義: 指定請求文件
  • -signkey的含義: 自簽名

生成客戶端證書

  1. 先要生成私鑰
openssl genrsa -out client.key 2048
  1. 生成請求文件
openssl req -new -key client.key -out client.csr
  1. 發給ca簽名
openssl x509 -req -days 365 -in client.csr -signkey client.key -out client.crt
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章