修改host文件,爲最後訪問域名準備html
C:\Windows\System32\drivers\etc host文件目錄
192.168.10.140 www.joyce.com 在最後添加這個自定義域名nginx
https公鑰和私鑰定義算法
服務端:公鑰、私鑰vim
服務器持有一對公鑰和私鑰,而且把本身的公鑰發給客戶端。瀏覽器
當瀏覽器發起申請時,數據經過瀏覽器端的私鑰加密發送給服務端。服務端拿到加密密文時,經過瀏覽器的公鑰解密獲得數據。服務器
服務端再經過本身的私鑰加密返回數據到瀏覽器,瀏覽器拿到密文後經過服務端的公鑰解密獲得數據。app
下載nginx和安裝tcp
cd /usr/local
wget http://nginx.org/download/nginx-1.14.0.tar.gz 下載
tar -zxvf nginx-1.14.0.tar.gz 解壓
/usr/local/nginx/sbin/nginx -V 查看ngixn版本極其編譯參數
cd nginx-1.14.0 進入nginx源碼目錄
./configure
#make & make install 編譯和安裝ide
要添加ssl加密模塊,需從新編譯模塊測試
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-file-aio --with-http_realip_module
make 千萬別make & make install,不然就覆蓋安裝了。make完以後在objs目錄下就多了個nginx,這個就是新版本的程序了
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak 備份舊的nginx程序
rm -rf /usr/local/nginx/sbin/nginx 先刪除舊的nginx程序
cp objs/nginx /usr/local/nginx/sbin/nginx 把新的nginx程序覆蓋舊的
生成https crt證書文件
yum -y update 更新yum源
yum -y install openssl 安裝ssl
cd /usr/local/nginx
mkdir ssl 建立ssl文件夾
cd ssl
openssl genrsa -des3 -out server.key 1024 生成server.key私鑰文件,長度爲1024,須要指定一個密碼:123456
-out filename :將生成的私鑰保存至filename文件,若未指定輸出文件,則爲標準輸出。 -numbits :指定要生成的私鑰的長度,默認爲1024。該項必須爲命令行的最後一項參數。 -des|-des3|-idea:指定加密私鑰文件用的算法,這樣每次使用私鑰文件都將輸入密碼,太麻煩因此不多使用。 -passout args :加密私鑰文件時,傳遞密碼的格式,若是要加密私鑰文件時單未指定該項,則提示輸入密碼。傳遞密碼的args的格式見openssl密碼格式。
openssl req -new -key server.key -out server.csr 生成server.csr公鑰文件,須要輸入server.key裏指定的密碼,我這裏是:123456
[root@192 ssl]# openssl req -new -key server.key -out server.csr
Enter pass phrase for 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.
-----
Country Name (2 letter code) [XX]:cs
State or Province Name (full name) []:www.joyce.com
Locality Name (eg, city) [Default City]:ShangHai
Organization Name (eg, company) [Default Company Ltd]:joyce
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:joyce
Email Address []:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
[root@192 ssl]#
以上這些後面帶[]的都是選填,能夠直接回車不填。
接下來去除私鑰的口令驗證,也就是去除用戶名密碼登陸校驗
cp server.key server.key.org 先複製一份
openssl rsa -in server.key.org -out server.key 去除口令後,覆蓋server.key文件。須要輸入server.key裏指定的密碼:123456
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt 標記證書使用私鑰和csr,使用x509格式,有效期限365天
[root@192 ssl]# openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt Signature ok subject=/C=cs/ST=www.joyce.com/L=ShangHai/O=joyce/CN=joyce Getting Private key
注意!server.crt 就是咱們須要的證書!
nginx.conf 配置https配置
vim /usr/local/nginx/conf/nginx.conf
worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on;
server {
listen 80;
server_name www.joyce.com;
return 301 https://$server_name$request_uri; 301重定向到https協議端口,這樣訪問http://www.joyce.com會自動跳轉到https://www.joyce.com
# 能夠參考:http://www.javashuo.com/article/p-exjlfygr-hx.html (nginx http轉 https)
}
server { listen 443 ssl; server_name www.joyce.com; ssl on; 啓用https協議訪問 ssl_certificate /usr/local/nginx/ssl/server.crt; 服務端公鑰 ssl_certificate_key /usr/local/nginx/ssl/server.key; 服務端私鑰 error_log /usr/local/nginx/logs/error443.log; location / { proxy_pass http://192.168.10.140:8761; 訪問應用 } } }
測試新的nginx.conf是否配置正確
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf -t
輸出以下結果表明nginx.conf配置文件無誤:
nginx: theconfiguration file /usr/local/nginx/conf/nginx.conf syntax is ok nginx:configuration file /usr/local/nginx/conf/nginx.conf test issuccessful
平滑重啓nginx
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf -s reload
查看ngixn版本極其編譯參數
/usr/local/nginx/sbin/nginx -V
開啓443端口(已關閉防火牆firewalld忽略這一步)
關閉防火牆 systemctl stop firewalld
開啓防火牆 systemctl start firewalld
查看防火牆狀態: systemctl status firewalld
若是防火牆被開啓,則有可能存在443端口沒有開啓監聽的狀況
firewall-cmd --zone=public --add-port=443/tcp –permanent
firewall-cmd --reload
查看防火牆裏添加的端口
firewall-cmd --list-ports
查看是否在防火牆裏開啓了443端口監聽
netstat -antp|grep 443 結果:
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 2037/nginx:master //表明防火牆開啓,並監聽了在nginx程序,表示成功。
瀏覽器端輸入https://www.joyce.com 能夠查看公鑰
注意!最後訪問的是https協議!而不是http!
在瀏覽器裏輸入https://www.joyce.com/ 便可訪問成功!