HTTPS(Hypertext Transfer Protocol over Secure Socket Layer),是以安全為目標(biāo)的HTTP通道,簡(jiǎn)單來講就是HTTP的安全版。即HTTP下加入SSL層,HTTPS的安全基礎(chǔ)是SSL,因此加密的詳細(xì)內(nèi)容就需要SSL。
它是一個(gè)URI scheme(抽象標(biāo)識(shí)符體系),句法類同http:體系,用于安全的http數(shù)據(jù)傳輸。https使用的默認(rèn)端口是443.
SSL證書
證書類型簡(jiǎn)介
要設(shè)置安全服務(wù)器,使用公共鑰創(chuàng)建一對(duì)公私鑰對(duì)。大多數(shù)情況下,發(fā)送證書請(qǐng)求(包括自己的公鑰),你的公司證明材料以及費(fèi)用到一個(gè)證書頒發(fā)機(jī)構(gòu)(CA).CA驗(yàn)證證書請(qǐng)求及您的身份,然后將證書返回給您的安全服務(wù)器。
但是內(nèi)網(wǎng)實(shí)現(xiàn)一個(gè)服務(wù)器端和客戶端傳輸內(nèi)容的加密,可以自己給自己頒發(fā)證書,只需要忽略掉瀏覽器不信任的警報(bào)即可!
由CA簽署的證書為您的服務(wù)器提供兩個(gè)重要的功能:
瀏覽器會(huì)自動(dòng)識(shí)別證書并且在不提示用戶的情況下允許創(chuàng)建一個(gè)安全連接
當(dāng)一個(gè)CA生成一個(gè)簽署過的證書,它為提供網(wǎng)頁(yè)給瀏覽器的組織提供身份擔(dān)保。
多數(shù)支持ssl的web服務(wù)器都有一個(gè)CA列表,它們的證書會(huì)被自動(dòng)接受。當(dāng)一個(gè)瀏覽器遇到一個(gè)其授權(quán)CA并不在列表中的證書,瀏覽器將詢問用戶是否接受或拒絕連接
生成SSL證書
openssl genrsa -des3 -out wangzhengyi.key 2048
openssl req -new -key wangzhengyi.key -out wangzhengyi.csr
創(chuàng)建一個(gè)自己簽署的CA證書
openssl req -new -x509 -days 3650 -key wangzhengyi_nopass.key -out wangzhengyi.crt
搭建https虛擬主機(jī)
虛擬主機(jī)配置文件
upstream sslfpm {
server 127.0.0.1:9000 weight=10 max_fails=3 fail_timeout=20s;
}
server {
listen 192.168.1.*:443;
server_name 192.168.1.*;
#為一個(gè)server開啟ssl支持
ssl on;
#為虛擬主機(jī)指定pem格式的證書文件
ssl_certificate /home/wangzhengyi/ssl/wangzhengyi.crt;
#為虛擬主機(jī)指定私鑰文件
ssl_certificate_key /home/wangzhengyi/ssl/wangzhengyi_nopass.key;
#客戶端能夠重復(fù)使用存儲(chǔ)在緩存中的會(huì)話參數(shù)時(shí)間
ssl_session_timeout 5m;
#指定使用的ssl協(xié)議
ssl_protocols SSLv3 TLSv1;
#指定許可的密碼描述
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
#SSLv3和TLSv1協(xié)議的服務(wù)器密碼需求優(yōu)先級(jí)高于客戶端密碼
ssl_prefer_server_ciphers on;
location / {
root /home/wangzhengyi/ssl/;
autoindex on;
autoindex_exact_size off;
autoindex_localtime on;
}
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
error_page 404 /404.html;
location = /50x.html {
root /usr/share/nginx/www;
}
location = /404.html {
root /usr/share/nginx/www;
}
# proxy the PHP scripts to fpm
location ~ \.php$ {
access_log /var/log/nginx/ssl/ssl.access.log main;
error_log /var/log/nginx/ssl/ssl.error.log;
root /home/wangzhengyi/ssl/;
fastcgi_param HTTPS on;
include /etc/nginx/fastcgi_params;
fastcgi_pass sslfpm;