https

這幾天 快被https 搞死了php

下面我總結幾點比較重要的html

 

 

爲了方便快速  請使用  控制面板  ,快速推薦寶塔   nginx

從一些域名處申請域名證書, 算法

域名認證+服務器備案 +ssl受權apache

 

安裝環境 分好幾種狀況,有的是利用 lnmp  輕便捷,ubuntu

lamp穩定  windows serverwindows

window就很是的簡單, 從獲取的直接安裝就好服務器

 同時要檢查服務器端的防火牆是否開放443端口,這裏爲了測試方便,直接清空了iptables規則表  iptables -Fsession


 

 

LNMP環境配置SSL

 

第一步:在nginx的conf目錄下新建一個cert文件夾 將域名證書的兩個文件上傳到該文件夾下

 

第二步:修改nginx的虛擬主機配置以下

 

server {
listen 80; 
server_name www.domain.com;
rewrite ^(.*) https://$server_name$1 permanent; # 監聽80端口 若是發現訪問的是80端口 則進行url重寫強制跳轉到443端口
}

server { 
listen 443; 
server_name www.domain.com; 
ssl on; 
ssl_certificate cert/1_www.domain.com_bundle.crt; 
ssl_certificate_key cert/2_www.domain.com.key; # SSL證書私鑰
ssl_session_timeout 5m; 
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; 
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
ssl_prefer_server_ciphers on; 

index index.php index.html index.htm; # 優先解析php文件

# 匹配後綴爲php的文件
location ~ \.php?.*$ {  
        root           /usr/local/nginx/html; # 設置網站根目錄
        fastcgi_pass   127.0.0.1:9000;  # 此處是配置過程當中最大的坑 稍後說明
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME   $document_root/$fastcgi_script_name;  
        include        fastcgi_params;  
    }   
} 

 

 

先說說nginx解析php的原理:
nginx接收到客戶端的請求後,會按配置文件中的規則進行匹配,發現後綴是.php文件,本身沒法處理,就由fastcgi_pass 127.0.0.1:9000;這項配置交給fastcgi。要想讓php處理這個文件,前提是php-fpm監聽9000端口,才能接受nginx轉發過來的請求並對其進行處理。fastcgi是一種進程管理器,管理cgi進程。市面上有多種實現了fastcgi功能的進程管理器,php-fpm就是其中的一種。再提一點,php-fpm做爲一種fast-cgi進程管理服務,會監聽端口,通常默認監聽9000端口,而且是監聽本機,也就是隻接收來自本機的端口請求,因此咱們一般輸入命令 netstat -nlpt | grep php-fpm 會獲得:
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 1057/php-fpmdom

也已經過這個命令查看9000端口是否被監聽:lsof -i:9000

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
php-fpm 5807 root 8u IPv4 34723 0t0 TCP localhost:cslistener (LISTEN)
php-fpm 5808 www 0u IPv4 34723 0t0 TCP localhost:cslistener (LISTEN)
php-fpm 5809 www 0u IPv4 34723 0t0 TCP localhost:cslistener (LISTEN)
---------------------

注意:
1. 要在防火牆中打開443端口
2. fastcgi_pass爲配置nginx與php-fpm的交互路徑,通常有兩種方式
sock方式:fastcgi_pass unix:/tmp/php-cgi.sock;
http方式:fastcgi_pass 127.0.0.1:9000;
任選其中一種便可,但必須和php-fpm的配置一致。
我安裝的是LNMP一鍵安裝包,默認nginx是http方式 而php-fpm是sock方式
所以能夠修改php-fpm的配置文件以下
 

 

 

3. 若是沒有正確配置,訪問php文件會出現502 bad gateway的錯誤

第三步:重啓nginx和php-fpm,再訪問網站一切正常

service nginx restart
service php-fpm restart

 

LAMP環境配置SSL

ubuntu下apache配置https的具體步驟

這個比較麻煩:一下緣由

安裝Apache

install apache2

APACHE,配置比較分散

  • 默認站點在 /var/www/
  • 配置文件在 /etc/apache2/
  • 日誌在 /var/log/apache/
  • 啓動腳本是 /usr/bin/apache2ctl 或者 /etc/init.d/apache2

安裝openssl

Ubuntu默認已經安裝了OPENSSL,若是沒安裝,

$sudo apt-get install openssl


HTTPS原理

1, 客戶端向服務器發送https請求;
2, 服務器上存儲了一套數字證書,其實質爲一對公私鑰。數字證書能夠本身製做,也能夠向組織申請。前者在客戶端訪問時須要驗證才能繼續訪問;後者不會彈出驗證提示;
3, 服務器將公鑰傳輸給客戶端;
4,客戶端驗證公鑰是否合法:無效(本身製做的)會彈出警告,有效的則生成一串隨機數,用此隨機數加密公鑰;
5, 客戶端將加密後的字符串傳輸給服務器 服務器收到字符串後,先使用私鑰進行解密,獲取加密使用的隨機數,並以此隨機數加密傳輸的數據(對稱機密);
6, 服務器將加密後的數據傳輸給客戶端; 客戶端收到數據後,使用本身的私鑰(即隨機字符串)進行解密。
7,服務器將加密後的數據傳輸給客戶端;
8,客戶端收到數據後,使用本身的私鑰(即隨機字符串)進行解密。

 

 說明:對稱加密:將數據和私鑰(隨機字符串)經過某種算法混合在一塊兒,除非知道私鑰,不然沒法解密。

 

生成SSL密鑰對

建立私鑰Key

 

[root@dl-001 ~]# cd /usr/local/nginx/conf

// 建立私鑰key文件,必須輸入密碼,不然沒法生成key文件
[root@localhost conf]# openssl genrsa -des3 -out tmp.key 2048
Generating RSA private key, 2048 bit long modulus
..............................+++
...............................................................+++
e is 65537 (0x10001)
Enter pass phrase for tmp.key:
Verifying - Enter pass phrase for tmp.key:

轉換key,取消密碼

[root@dl-001 conf]# openssl rsa -in tmp.key -out test.key
Enter pass phrase for tmp.key:
writing RSA key

[root@dl-001 conf]# rm -f tmp.key 
相關文章
相關標籤/搜索