1. 程式人生 > >阿里雲Linux CentOS 7.3 64位 Apache SSL證書部署全過程記錄

阿里雲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,把前面的註釋去掉。


           宣告:個人比較菜,可能上述問題上有些許錯誤,不過親測是有效的,上述方法也是自己通過兩天的不斷查資料搜尋整理的,希望能夠幫到大家!