這幾天 快被https 搞死了php
下面我總結幾點比較重要的html
爲了方便快速 請使用 控制面板 ,快速推薦寶塔 nginx
從一些域名處申請域名證書, 算法
域名認證+服務器備案 +ssl受權apache
安裝環境 分好幾種狀況,有的是利用 lnmp 輕便捷,ubuntu
lamp穩定 windows serverwindows
window就很是的簡單, 從獲取的直接安裝就好服務器
同時要檢查服務器端的防火牆是否開放443端口,這裏爲了測試方便,直接清空了iptables規則表 iptables -Fsession
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的錯誤
service nginx restart
service php-fpm restart
ubuntu下apache配置https的具體步驟
這個比較麻煩:一下緣由
install apache2
APACHE,配置比較分散
Ubuntu默認已經安裝了OPENSSL,若是沒安裝,
$sudo apt-get install openssl
1, 客戶端向服務器發送https請求;
2, 服務器上存儲了一套數字證書,其實質爲一對公私鑰。數字證書能夠本身製做,也能夠向組織申請。前者在客戶端訪問時須要驗證才能繼續訪問;後者不會彈出驗證提示;
3, 服務器將公鑰傳輸給客戶端;
4,客戶端驗證公鑰是否合法:無效(本身製做的)會彈出警告,有效的則生成一串隨機數,用此隨機數加密公鑰;
5, 客戶端將加密後的字符串傳輸給服務器 服務器收到字符串後,先使用私鑰進行解密,獲取加密使用的隨機數,並以此隨機數加密傳輸的數據(對稱機密);
6, 服務器將加密後的數據傳輸給客戶端; 客戶端收到數據後,使用本身的私鑰(即隨機字符串)進行解密。
7,服務器將加密後的數據傳輸給客戶端;
8,客戶端收到數據後,使用本身的私鑰(即隨機字符串)進行解密。
說明:對稱加密:將數據和私鑰(隨機字符串)經過某種算法混合在一塊兒,除非知道私鑰,不然沒法解密。
[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:
[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