openssl+http實現https

來源:互聯網
上載者:User

標籤:openssl   https   

openssl詳解及實現httpsopenssl詳解及實現https

OpenSSL 是一個安全通訊端層密碼庫,囊括主要的密碼演算法、常用的密鑰和認證封裝管理功能及SSL協議,並提供豐富的應用程式供測試或其它目的使用。

秘鑰演算法和協議:

  • 對稱式加密:
    加密和解密使用同一個密鑰,未經處理資料分成固定大小塊,演算法不同
    秘鑰過多,秘鑰分發困難
    DES,3DES  AES  Blowfish  Twofish  IDEA  RC6 CAST5

  • 公開金鑰加密:
       分公開金鑰與私密金鑰
           公開金鑰:從私密金鑰中提取產生,可公開給所有人;pubkey
           私密金鑰:通過工具建立,使用者自己留存保證其私密性;secret key
       數位簽章:(私密金鑰加密的特徵碼)接受方確認發送方身份
       秘要交換:發送方用對方公開金鑰加密一個對稱秘鑰 發送給對方
       資料加密:不常用公開金鑰進行資料加密 慢,RSA,DSA

    發送方:

    接收方:

  1. 用自己的私密金鑰解密對稱秘鑰

  2. 用對稱秘鑰解密整段資料–保密性

  3. 用發送方的公開金鑰解密特徵碼–驗證發送方身份

  4. 計算特徵碼與接收的特徵碼作比較–保證資料完整性
    可能出現中間人。要可靠的拿到對方公開金鑰:CA

  1. 計算資料的特徵碼

  2. 用自己的私密金鑰加密這段特徵碼

  3. 產生臨時對稱秘鑰(一次性),用其加密整段資料(包括加密的特徵碼)

  4. 用接收方的公開金鑰加密臨時對稱秘鑰附加在資料後

單向加密: 提取資料指紋,只能加密不能解密 定長輸出,雪崩效應 保證資料完整性 演算法: md5  固定128位輸出 sha1 160,224,256,384,512

秘要交換:公開金鑰交換
 DH:利用 已知大質數的高次方的結果   反求次方極難
 協商產生p,g   本機產生x,將 p^x%g 的結果發送
 接收方本機產生y   求 (p^x%g)^y   對方 (p^y%g)x  結果相同
 RSA ECDH ECDHE

PKI: Public Key Infrastructure

  • 簽證機構:CA(Certificate Authority)
    登錄授權單位:RA
    憑證撤銷清單:CRL
    認證存取庫:

X.509:定義了認證的結構以及認證協議標準

  • 版本號碼
    序號
    簽名演算法
    頒發者
    有效期間限
    主體名稱
    主體公開金鑰
    CRL發佈點
    擴充資訊
    發行者簽名

SSL: Secure Socket Layer
TLS: Transport Layer Security

資料保密性
資料完整性
安全驗證

OpenSSL:開源項目,三個組件

  • openssl: 多用途的命令列工具

  • libcrypto: 密碼編譯演算法庫

  • libssl:加密模組應用庫,實現了ssl及tls

# openssl
標準命令,訊息摘要命令,加密命令

openssl enc
   -e:加密
   -d:解密
   -a:文本編碼格式
   -salt:鹽
   -in:要處理的檔案
   -out:要輸出的檔案
]# openssl enc -e -rc4 -a -salt -in fstab -out fstab.en 加密

單向加密:計算特徵碼

openssl dgst -   FILE
   md2 md4 md5 rmd160  sha sha1

]# md5sum FILE
]# openssl dgst -md5 FILE   md5加密

產生使用者密碼:

openssl passwd -1 -salt SALT

產生隨機數:

openssl rand [base64|hex] #
   base64:
   hex:16進位編碼
   #:長度
]# openssl rand -base64 10  使用時去掉尾部兩個“==”
GyA/hYBNH20RAQ==
https:http+openssl

環境:
Web:CentOS 6.8,10.1.235.6
CA:CentOS 7,10.1.235.7
關閉防火牆及selinux

CentOS 7,10.1.235.7:
建立私人CA:

    產生私密金鑰:指定位置
]# (umask 077;openssl genrsa -out /etc/pki/CA/private/cakey.pem 4096)
   產生字簽認證:
]# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 3650
   -new:產生新認證簽署請求
   -x509:產生自簽格式認證,用於建立私人CA,其它情況不加
   -key:產生請求時用到的私密金鑰路徑
   -out:產生的請求檔案路徑,若自簽操作將直接產生簽署過的認證
   -days:認證的有效時間長度
...
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:Beijing
Locality Name (eg, city) [Default City]:Beijing
Organization Name (eg, company) [Default Company Ltd]:Class
Organizational Unit Name (eg, section) []:Ops
Common Name (eg, your name or your server‘s hostname) []:www.zjj.com
Email Address []:

建立所需檔案:
]# touch /etc/pki/CA/{serial,index.txt}
]# echo 01 > /etc/pki/CA/serial

CentOS 6.8,10.1.235.6:
安裝配置http服務:

安裝http及mod_ssl模組
]# yum install httpd mod_ssl
]# vi /etc/httpd/conf/httpd.conf
#ServerName www.example.com:80
取消注釋更改 ServerName www.zjj.com:80

DocumentRoot "/var/www/html"
注釋該行 #DocumentRoot "/var/www/html"
儲存退出

產生認證請求:

]# mkdir /etc/httpd/ssl
]# cd /etc/httpd/ssl

   產生私密金鑰:
]# (umask 077;openssl genrsa -out  httpd.key 2048)

   產生認證請求:
]# openssl req -new -key httpd.key -out httpd.csr
...填入相關內容
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:Beijing
Locality Name (eg, city) [Default City]:Beijing
Organization Name (eg, company) [Default Company Ltd]:Class
Organizational Unit Name (eg, section) []:Ops
Common Name (eg, your name or your server‘s hostname) []:www.eva.com
Email Address []:
...

   將請求發送至CA主機:
]# scp ../ssl/httpd.csr  10.1.235.7:/
    在CA主機上籤署:CentOS 7,10.1.235.54
]# openssl  ca -in httpd.csr -out httpd.crt -days 365
   將認證發送至Web主機
]# scp httpd.crt  10.1.235.6:/etc/httpd/ssl

Web主機配置ssl,找到以下兩行,更改對應的認證及私密金鑰檔案:

]# vi /etc/httpd/conf.d/ssl.conf

SSLCertificateFile /etc/httpd/ssl/httpd.crt
SSLCertificateKeyFile /etc/httpd/ssl/httpd.key

在虛擬機器主機標籤內添加:
Documentroot /virtual
<Directory /virtual>
   Options None
   AllowOverRide None
</Directory>

]# mkdir /vitual
]# vi /virtual/index.html   建立首頁檔案
<center>https from 10.1.235.6</center>

測試:

在/etc/hosts檔案中添加一條網域名稱解析
10.1.235.6  www.eva.com

可以在Cent 7上指定認證訪問:未指定認證訪問https會報錯
]# curl --cacert /etc/pki/CA/cacert.pem https://www.eva.com
<center>https from 10.1.235.6</center>

windows中可以將認證匯入為受信任的根憑證




本文出自 “平平無奇” 部落格,請務必保留此出處http://zzjasper.blog.51cto.com/9781564/1864578

openssl+http實現https

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.