乾貨 阿里雲服務器申請免費證書開啓ssl實現支持https的操作流程 及 顯示“非安全連接”的解決辦法

幫朋友配置服務器對https的支持,也就是ssl證書。傻瓜式的步驟,估計下次他看這個自己就會搞了吧。這是一篇只用了10多分鐘寫完的流程,沒有仔細審閱。如果裏面有問題請告訴我一生。

準備工作

首先當然是環境都弄好了。安裝好php全家桶,nginx選好相應的版本,安裝好ssl(一般集成環境裏面有。開啓就完事了)
案例的服務器配置是:
阿里雲服務器 * 1
centos6.5(爲啥這麼老)
php5.6,
mysql4.9
nginx1.17.1(爲啥這個這麼新)
openssl 1.0.1e
這幾樣的安裝方法網上一抓一大把,這裏我就不復述了
比較重要的是openssl成功開啓後在phpinfo()中會看到此信息
在這裏插入圖片描述

獲取證書

申請證書

在阿里雲控制檯的搜索框中輸入"ssl證書",就能找到直達入口。就是下圖這個神奇的位置:
就是這個神奇的位置
點擊“ssl證書(應用安全)”按鈕購,進入證書管理頁面。
首先點擊證書管理頁面中的這個“購買證書”按鈕:
在這裏插入圖片描述
進入ssl證書配置選擇頁面,如果你的網站有更專業的認證需求,那麼你需要根據情況選擇付費證書。如果你是個人網站或是普通官網,可以申請免費證書使用。如圖進行配置,就可以免費購買證書
在這裏插入圖片描述
由於免費證書一次智能申請1個,如果你有子域名需求,那麼在購買數量這一欄可以多填幾個。都是免費的。選擇好後點擊“立即購買”按鈕,就進入支付頁面了
在這裏插入圖片描述
確認法律法規後,點擊去支付。當然,是不花錢的。。
在這裏插入圖片描述
終於你看到了這個頁面。到這一步就完成了證書的申請。
點擊證書控制檯,就可以看到“未簽發”這裏,有你的申請記錄。
在這裏插入圖片描述
接下來就是等待。雖然阿里雲聲稱是1天時間審覈,實際上1個小時內就能完成審覈。
通過審覈的證書,就可以在“已簽發”這一欄看到了:
在這裏插入圖片描述
可以看到,免費證書的有效期是1年。1年後別忘了來重新免費。。。購買

下載證書

接下來點擊證書管理右側的 下載按鈕,就看到了這個菜單
在這裏插入圖片描述
“幫助”按鈕是nginx的配置幫助。“下載”按鈕就是下載我們的證書。由於我們是nginx服務,所以點擊nginx那欄的下載按鈕。
下載完成後,解壓下載後的安裝包就可以看到證書的 本體了。nginx版本的長這樣:
在這裏插入圖片描述

將證書上傳至服務器

進入服務器,進入nginx的配置文件目錄。我的配置路徑是/etc/nginx/conf.d/
在這個路徑下建立一個文件夾起名爲:www.xxxx.com.cert.d
使用ftp軟件,比如filezilla什麼的,把這兩個文件上傳到剛纔新建的文件夾下這一步就完成了

修改nginx配置

這一步的目的是允許瀏覽器通過https訪問nginx服務.
以下是簡單的配置實例,第一個server是普通的http訪問,第二個是https訪問。正常來說我們還應該設置http轉https的規則。把這段代碼複製下來,根據我註釋的說明去配置,就可以了。

# http訪問
server {
  listen 80; #http的外網訪問默認端口是80
  server_name www.xxxx.com;  #你的網站域名
  index index.html index.htm index.php index.js;#定義你的項目入口文件
  root /var/wwwroot/www.xxxx.com/;#定義你的網站根目錄
  # 將所有的http請求,轉到下面https處理方案
  location / {
     rewrite (.*) https://www.你的域名$1 permanent; 
  }
  access_log /etc/nginx/logs/www_access.log main;
}
# 以下是本文重點的https 設置
# https訪問
server {
  listen 443 ssl; # nginx1.15以上需要這麼寫才能開啓ssl。以前的版本的寫法是:listen 443; ssl on;
  server_name www.xxxx.com;  #你證書上註冊的域名
  root /var/wwwroot/www.xxxx.com/; # 網站根目錄
  index index.html index.htm index.php index.js; #網站入口文件
  #以下兩個需要設置剛纔上傳的證書文件路徑
  ssl_certificate /etc/nginx/conf.d/www.xxxx.com.cert.d/www.xxx.com.pem;
  ssl_certificate_key /etc/nginx/conf.d/www.xxxx.com.cert.d/www.xxxx.com.key;
  ssl_session_timeout 5m;
  # 加密規則配置,可以直接copy使用 
  ssl_ciphers "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4";
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  ssl_prefer_server_ciphers on;
  # 解析php所用的設置
  location ~ \.php$ {
    fastcgi_pass 127.0.0.1:9000;#php-fpm的默認端口是9000
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_intercept_errors on;
    fastcgi_buffer_size 4K;
    fastcgi_buffers 128 4k;
    fastcgi_connect_timeout 50;
    fastcgi_send_timeout 40;
    fastcgi_read_timeout 40;
    try_files $uri =404;
    include fastcgi_params;
  }
}

其實最主要的就是在這裏開啓ssl,並指定證書文件路徑。

開啓阿里雲端口

很多人明明按以上步驟做好了相關配置,但就是無法順利訪問https。主要原因就是這個端口問題。由於案例雲需要配置安全策略組,所以就算你在linux開啓了相關端口,外部也是無法使用的。必須在安全策略組註冊端口才行。
首先在阿里雲頁面找到你的服務器管理頁面。我是雲服務器,所以要點擊"雲服務器ecs"按鈕
在這裏插入圖片描述
選擇運行中的實例
在這裏插入圖片描述

選擇你的服務器,然後點擊管理按鈕
在這裏插入圖片描述在這個頁面中點擊本實例安全策略組
在這裏插入圖片描述
點擊配置規則在這裏插入圖片描述
點擊快速添加按鈕
在這裏插入圖片描述
按如圖中的配置就可以打開https專用的443端口了
在這裏插入圖片描述

保險起見,最後還是重啓一下nginx服務把
service nginx restart
到這一步就完成了所有配置。用https://去訪問你的網站吧。

雖然服務器支持https訪問了,但瀏覽器地址欄前面總是顯示“非安全連接”怎麼辦

除了檢查你的網頁通訊加密相關的配置外,你的網頁中有非安全連接“http://”也會導致這個情況出現。你可以有很多辦法解決這個問題。比如資源遷移到安全連接,又或是寫轉接方法處理頁面等等。如果你使用的是比較著名的框架,比如yii、leverl、worldpress、express什麼的,應該還會找到相應的插件去解決這些問題。不用任何修改,安裝就好就可以了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章