Http與Https的區別
HTTP:是互聯網上應用最為廣泛的一種網絡協議,是一個客戶端和服務器端請求和應答的標准(TCP),用於從WWW服務器傳輸超文本到本地瀏覽器的傳輸協議,它可以使瀏覽器更加高效,使網絡傳輸減少。
HTTPS:是以安全為目標的HTTP通道,簡單講是HTTP的安全版,即HTTP下加入SSL層,HTTPS的安全基礎是SSL,因此加密的詳細內容就需要SSL。HTTPS協議的主要作用可以分為兩種:一種是建立一個信息安全通道,來保證數據傳輸的安全;另一種就是確認網站的真實性。
HTTPS和HTTP的區別主要如下:
1、https協議需要到ca申請證書,一般免費證書較少,因而需要一定費用。
2、http是超文本傳輸協議,信息是明文傳輸,https則是具有安全性的ssl加密傳輸協議。
3、http和https使用的是完全不同的連接方式,用的端口也不一樣,前者是80,后者是443。
4、http的連接很簡單,是無狀態的;HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網絡協議,比http協議安全。
使用openssl生成證書
openssl是目前最流行的SSL密碼庫工具,其提供了一個通用、健壯、功能完備的工具套件,用以支持SSL/TLS協議的實現。
比如生成到:/usr/local/ssl
openssl req -x509 -nodes -days 36500 -newkey rsa:2048 -keyout /usr/local/ssl/nginx.key -out /usr/local/ssl/nginx.crt
生成過程需要手動輸入一些內容:
# openssl req -x509 -nodes -days 36500 -newkey rsa:2048 -keyout /u sr/local/ssl/nginx.key -out /usr/local/ssl/nginx.crt
Generating a 2048 bit RSA private key
...............................................................................+ ++
...............+++
writing new private key to '/usr/local/ssl/nginx.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) [XX]:CN
State or Province Name (full name) []:beijing
Locality Name (eg, city) [Default City]:beijing
Organization Name (eg, company) [Default Company Ltd]:xxxx
Organizational Unit Name (eg, section) []:xxxx
Common Name (eg, your name or your server's hostname) []:xxxx(一般是域名)
Email Address []:xxxx@xxxx.com
下面是上述命令相關字段含義:
Country ,單位所在國家,為兩位數的國家縮寫,如: CN 就是中國
State/Province ,單位所在州或省
Locality ,單位所在城市 / 或縣區
Organization ,此網站的單位名稱;
Organization Unit,下屬部門名稱;也常常用於顯示其他證書相關信息,如證書類型,證書產品名稱或身份驗證類型或驗證內容等;
Common Name ,網站的域名;
Email Address ,郵箱地址
Nginx安裝http_ssl_module模塊
初次按照Nginx的時候,在./configure步驟時,改成./configure --with-http_ssl_module
如果已經安裝過Nginx,但是未安裝http_ssl_module。按照以下步驟來:
1.進入到解壓后的源碼包,如:
cd /usr/local/nginx-1.14.1/
- 編譯
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
這里的路徑可自定義
3. make:
make
千萬不要執行make install,否則就覆蓋安裝了。
4. 備份原有的nginx,如:
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx_bak
- 然后將剛剛編譯好的nginx覆蓋掉原有的nginx(nginx需要停止)
cp ./objs/nginx /usr/local/nginx/sbin/
- 查看安裝情況,如圖所示即安裝ssl模塊成功:
/usr/local/nginx/sbin/nginx -V

nginx配置https
貼部分配置信息:
server {
ssl on;
listen 443;
server_name localhost;
ssl_certificate /usr/local/ssl/nginx.crt;
ssl_certificate_key /usr/local/ssl/nginx.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
server_tokens off;
fastcgi_param HTTPS on;
fastcgi_param HTTP_SCHEME https;
access_log /usr/local/nginx/logs/httpsaccess.log;
}
檢驗配置文件正確性:
/usr/local/nginx/sbin/nginx -t
重啟nginx:
/usr/local/nginx/sbin/nginx -s reload

