OneinStack包含以下組合:
lnmp(Linux + Nginx+ MySQL+ PHP)
LNMP安裝SSL安全證書 部署HTTPS:https://www.gworg.com/ssl/309.html
lamp(Linux + Apache+ MySQL+ PHP)
APACHE安裝SSL證書:https://www.gworg.com/ssl/106.html
Apache自動跳轉到 HTTPS:https://www.gworg.com/ssl/130.html
lnmpa(Linux + Nginx+ MySQL+ PHP+ Apache):Nginx處理靜態,Apache(mod_php)處理動態PHP
Nginx安裝SSL證書:https://www.gworg.com/ssl/107.html
Nginx 自動跳轉到HTTPS:https://www.gworg.com/ssl/167.html
lnmt(Linux + Nginx+ MySQL+ Tomcat):Nginx處理靜態,Tomcat(JDK)處理JAVA
lnmh(Linux + Nginx+ MySQL+ HHVM)
LNMP安裝SSL安全證書 部署HTTPS
第一步、部署HTTPS基礎工作准備
選用正規的SSL域名證書
第二步、上傳和部署SSL證書
A - 把上面的一個CRT一個KEY文件上傳到VPS ROOT目錄中,然后對應修改成SSL.CRT和SSL.KEY文件名,或者我們用作其他命令都可以。
B - 解密私鑰和設置權限
openssl rsa -in ssl.key -out /root/ssl.key
chmod 600 /root/ssl.key
登錄SSH,執行上述兩行腳本,解密私鑰和授權。
第三步、在LNMP環境部署站點SSL設置
我們需要在已有的LNMP添加了站點,然后在站點對應的CONF文件設置。
在"/usr/local/nginx/conf/vhost/"目錄文件中,找到對應站點的conf文件,然后修改設置如下
server
{
listen 80;
listen 443 ssl;
#listen [::]:80;
ssl on;
ssl_certificate /root/ssl.crt;
ssl_certificate_key /root/ssl.key;
server_name gworg.com www.gworg.com;
上面的紅色標注部分是我添加的,對應路徑我們要與之前上傳的CRT和KEY文件路徑對應以及文件名不要搞錯。
最后,我們重啟LNMP,可以看到SSL證書生效,且HTTPS可以訪問站點。
APACHE安裝SSL證書
SSL從購買到安裝分為一下步驟:
-
提交CSR & 使用自動生成CSR
-
驗證域名所有權
-
簽發證書
-
下載服務器證書
在我們網站購買的客戶,下載Apache格式的證書
解壓后應包含三個文件:
yourdomain.com.crt (服務器證書) yourdomain.com.key (私鑰文件)如果為空請將生成CSR時保存的私鑰內容粘貼在文件中 yourdomain.com.ca-bundle (根證書鏈)
下面介紹如何安裝Apache. 首要條件就是 apache 已經安裝了 mod_ssl.so 模塊 。
檢測方法使用以下命令:
httpd -M | grep mod_ssl
如果有顯示 mod_ssl.so 表示已經安裝了apache模塊。
CentOS/Redhat安裝mod_ssl.so
yum install mod_ssl
Debian/Ubuntu
sudo a2enmod ssl sudo service apache2 restart
Apache SSL配置
Listen 443 (如果配置已經存在就不要加) LoadModule ssl_module modules/mod_ssl.so (如果配置已經存在就不要加) NameVirtualHost *:443 (非必須,配置多個SSL站點會需要) <VirtualHost *:443> ServerName www.gworg.cn ServerAlias gworg.cn DocumentRoot /var/www/html SSLEngine on SSLProtocol all -SSLv2 -SSLv3 SSLCertificateFile /etc/ssl/server.crt SSLCertificateKeyFile /etc/ssl/server.key SSLCertificateChainFile /etc/ssl/server.ca-bundle </VirtualHost>
以上只是SSL配置范例,盡量不要直接應用於生產環境,請根據80端口的站點配置修改。
證書可以放在其他位置,沒有強制要求
ServerName 和 ServerAlias 需要修改
配置完成重啟Apache使其生效.
service httpd restart
使用https://yourdomain.com 測試是否可以訪問。
問題排查:
如果使用CDN(加速器),需要在CDN上面安裝證書,國內免費加速的都不支持https(已知阿里雲cdn支持)
檢查443端口是否啟動 使用下面命令 netstat -apnt | grep 443 (如果沒有啟動檢查配置文件或者端口是否沖突)
443端口如果已經啟動,但不能訪問,請檢查防火牆(或者安全狗) ,允許443端口.
linux iptables使用下面命令:
iptables -A INPUT -p tcp -m tcp --dport https -j ACCEPT
Apache自動跳轉到 HTTPS
網站根目錄新建 .htaccess
RewriteEngine On RewriteCond %{SERVER_PORT} 80 RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R,L]
301跳轉
<IfModule mod_rewrite.c> RewriteEngine on RewriteBase / RewriteCond %{SERVER_PORT} !^443$ RewriteRule (.*) https://%{SERVER_NAME}/$1 [R=301,L] </IfModule>
站點綁定多個域名,只允許www.gworg.com 跳轉
RewriteEngine On RewriteCond %{SERVER_PORT} 80 RewriteCond %{HTTP_HOST} ^example.com [NC,OR] RewriteCond %{HTTP_HOST} ^www.example.com [NC] RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R,L]
###把網址更改為自己的###
高級用法 (可選)
RewriteEngine on # 強制HTTPS RewriteCond %{HTTPS} !=on [OR] RewriteCond %{SERVER_PORT} 80 # 某些頁面強制 RewriteCond %{REQUEST_URI} ^something_secure [OR] RewriteCond %{REQUEST_URI} ^something_else_secure RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L] # 強制HTTP RewriteCond %{HTTPS} =on [OR] RewriteCond %{SERVER_PORT} 443 # 某些頁面強制 RewriteCond %{REQUEST_URI} ^something_public [OR] RewriteCond %{REQUEST_URI} ^something_else_public RewriteRule .* http://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
OneinStack一鍵包快速自動配置Let's Encrypt免費SSL證書方法
如果我們不想購買付費SSL證書的話,選擇和使用Let's Encrypt免費SSL證書應該算是目前比較優先的選擇,雖然每隔90天需要重新激活續約一次,但是如果設定好自動續約問題也不是很大,而且兼容支持的瀏覽器算是比較齊全的,老左也看到不少的優秀網站也有在使用。
老左在前面一篇"LNMP V1.4一鍵快速部署Let's Encrypt免費SSL證書"文章中可以看到今年兒童節將會出來的正式版LNMP將會可以一鍵部署Let's Encrypt證書。同時,最近一年中用戶較多的OneinStack一鍵包也是支持一鍵快速部署Let's Encrypt免費SSL證書的,老左將在這篇文章中記錄我們如何用OneinStack一鍵包安裝部署Let's Encrypt。
第一、OneinStack安裝Let's Encrypt證書准備工作
1、我們當前服務器需要部署好OneinStack一鍵包,如果沒有部署則需要參考這篇文章自動部署。
2、我們需要在配置好的環境中,再單獨安裝Let's Encrypt客戶端,要不我們無法自動獲取Let's Encrypt安裝選項。
./addons.sh
我們只有安裝好客戶端后才可以添加站點的時候出現Let's Encrypt選項。
3、我們需要先將域名解析到當前服務器,這樣安裝證書配置時候會檢測域名所有權。
第二、OneinStack添加站點自動配置Let's Encrypt
1、基本的站點部署參數設置
./vhost.sh
我們用正常添加站點的命令進行站點部署配置參數。
2、配置SSL證書
因為我們開始的時候安裝了客戶端,所以在這里可以看到有Let's Encrypt選項,我們只要 解析過來域名,這里一般沒有問題,郵箱我們可以隨便填寫一個自己的。后面還有幾個網站參數,比如日志、偽靜態規則等,我們正常配置即可。
3、安裝成功
看到這樣的界面,理論上是可以成功安裝SSL。我們可以簡單的丟一個頁面到網站目錄下,然后看看HTTPS是不是強制跳轉過去。這個時候我們只要配置網站或者搬遷網站修改指向即可。
第三、關於Let's Encrypt自動續約問題
老左看到自動部署SSL之后,也自動添加續約腳本。前提是我們的服務器要安裝好crontab,如果沒有安裝則需要自己先安裝,要不部署不到。
第四、OneinStack一鍵包配置Let's Encrypt小結
1、我們在OneinStack環境中配置Let's Encrypt證書還是比較簡單的,前提是我們要安裝Let's Encrypt客戶端后再添加站點才有選項。
2、缺點就是我們站點要開始添加的時候才可以自動部署選擇Let's Encrypt安裝,如果是已有站點,則不可以自動單獨配置。