阿里雲Linux CentOS 7.3 64位 Apache SSL證書部署全過程記錄
因為參加比賽的需要,所以申請了一個阿里的伺服器,系統的話是Linux CentOS 7.3 64位,之後就開始了我的填坑之旅。
我購買的是學生版的優惠ECS,9.9元一個月,同時為了配備最新的環境和鍛鍊自己的能力,決定不使用映象和預安裝,只是安裝了一個CentOS 7.3系統。
其他的問題都比較好解決,先申請證書,通過後進行安裝,但是我遇到了這個問題,就是我的httpd.conf裡面找不到mod_ssl.so,於是我開始了探索之旅
#LoadModule ssl_module modules/mod_ssl.so (如果找不到請確認是否編譯過 openssl 外掛) #Include conf/extra/httpd-ssl.conf
阿里的這個Linux CentOS 7.3中預裝的openssl的版本是 1.0.1e的,好像是2013年的一個版本,具體的可以用下面這個命令來檢視,但是我在Linux中搜索卻又找不到他,為了後續的SSL證書的安裝,此處要預先安裝最新版的openssl,但是在安裝過程中,他又會提示你的系統中沒有 zlib 。所以我建議先不要進行Apache的安裝,最好是重新初始化一下磁碟,全部重新開始,來避免不必要的麻煩,因為Linux是多執行緒,並且一個軟體可以下載多次,我也之前就是單純把apache檔案刪了,就算是把httpd程序全殺了,也還是會有很多特別麻煩的問題,包括站點的設定什麼的,端口占用,開啟的時候也會有混亂,所以我最後選擇了直接初始化。
$openssl version -a
因此完整的做法應該是:
1.下載 zlib
zlib官方網站: http://www.zlib.net
目前最新版本zlib是zlib1.2.11,
安裝開始:
方法一:
在Linux 命令列中輸入下列命令即可完成
$wget http://www.zlib.net/zlib-1.2.11.tar.gz $tar -xvzf zlib-1.2.11.tar.gz $cd zlib-1.2.11 $./configure $make $make install
方法二:(推薦)
直接將 URL : http://www.zlib.net/zlib-1.2.11.tar.gz
貼上到瀏覽器的位址列,進行壓縮包的下載。然後將下載得到的壓縮包拷貝到你的Linux機器上,進行編譯安裝。
此處要用到WinSCP(一款圖形視覺化Linux面板),進行檔案的上傳、下載、編輯會非常方便
(1)在瀏覽器位址列中輸入 http://www.zlib.net/zlib-1.2.11.tar.gz ,將檔案下載儲存到本地
(2)用WinSCP 將本地的 zlib-1.2.11.tar.gz 檔案上傳到Linux上,我是上傳到了 usr目錄中
(3)在Linux命令列中(可以在阿里雲的遠端連線中操作也可以在 Xshell中進行),執行下列命令,即可完成 zlib 的安裝
$tar -xvzf zlib-1.2.11.tar.gz
$cd zlib-1.2.11
$./configure
$make
$make install
2.進行最新版的 openssl 的安裝 (以下為阿里官方文件)
使用源更新 OpenSSL
- 對於阿里雲的 Linux/CentOS 伺服器,以 root 許可權執行以下命令:
sudo yum update openssl
- 對於 Ubuntu Server/Debain 伺服器,以 root 許可權執行以下命令:
sudo apt-get update sudo apt-get upgrade
使用編譯安裝更新 OpenSSL
下載最新版本 OpenSSL(以 openssl-1.1.0e 為例)。
注意:以下編譯升級操作存在風險,建議由專業技術人員來操作。
以 root 許可權執行以下命令:
wget https://www.openssl.org/source/openssl-1.1.0e.tar.gz
tar zxvf openssl-1.1.0e.tar.gz
cd openssl-1.1.0e
./config shared zlib
make
make install
# 替換舊版 OpenSSL
mv /usr/bin/openssl /usr/bin/openssl.old
mv /usr/include/openssl /usr/include/openssl.old
ln -s /usr/local/bin/openssl /usr/bin/openssl
ln -s /usr/local/include/openssl/ /usr/include/openssl
檢查 OpenSSL 版本
以 root 許可權執行 openssl version -a
命令,系統會返回 OpenSSL 版本資訊,如下所示。
OpenSSL 1.1.0e 16 Feb 2017 built on: reproducible build, date unspecified platform: linux-x86_64 compiler: gcc -DZLIB -DDSO_DLFCN -DHAVE_DLFCN_H -DNDEBUG -DOPENSSL_THREADS -DOPENSSL_NO_STATIC_ENGINE -DOPENSSL_PIC -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-1.1\"" -Wa,--noexecstack OPENSSLDIR: "/usr/local/ssl" ENGINESDIR: "/usr/local/lib/engines-1.1"
當輸入 openssl version -a 時可能出現的問題:
openssl: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory
解決的方法:
在/etc/ld.so.conf檔案中寫入openssl庫檔案的搜尋路徑(我的Linux是64位的Centos7.3,所以這裡是lib64)
echo "/usr/local/lib64" >> /etc/ld.so.conf
使修改後的/etc/ld.so.conf生效,問題解決
ldconfig -v
當你能夠查詢到openssl為最新版本時,我們的 openssl 安裝成功了
(3)重新安裝Apache
(4) Apache 安裝完成後,這次當你再去httpd.conf裡面搜尋,你就會找到 mod_ssl.so 了
(5)之後的一切就可以按照阿里的官方文件繼續進行了
在一切都按照阿里官方文件操作後,可能會有這樣的提示
"Syntax error on line 76 of C:/apache/conf/extra/httpd-ssl.conf:SSLSessionCache: 'shmcb' session cache not supported (known names: ). Maybe you need to load the appropriate socache module (mod_socache_shmcb?)."
解決辦法:
開啟httpd.conf,找到 LoadModule socache_shmcb_module modules/mod_socache_shmcb.so,把前面的註釋去掉。
宣告:個人比較菜,可能上述問題上有些許錯誤,不過親測是有效的,上述方法也是自己通過兩天的不斷查資料搜尋整理的,希望能夠幫到大家!