linux下apache安裝ssl步驟


制作證書:

             參考:linux下運用opensll制作ssl證書

            生成三個證書 server.crt 、server-ca.crt、server.key

安裝openssl

tar -xzvf openssl-1.0.2h.tar.gz
cd openssl-1.0.2h
./config -fPIC enable-shared
make depend
make && make install
make clean && make distclean

#openssl類庫做軟連接
ln -s /usr/local/ssl//lib/*.so.* /usr/lib64
ln -s /usr/local/ssl//lib/*.so.* /usr/lib
安裝apache

     apache依賴包安裝不詳細說明,

tar xvzf httpd-2.4.18.tar.gz
cd httpd-2.4.18
./configure \
--prefix=/usr/local/cp-httpd-2.4.18 \
--with-apr=/usr/local/cp-apr-1.5.2 \
--with-apr-util=/usr/local/cp-apr-util-1.5.4 \
--with-apr-iconv=/usr/local/cp-apr-iconv-1.2.1 \
--with-ssl=/usr/local/ssl \
--enable-so \
--enable-ssl \
--enable-mods-shared=all \
--enable-cache \
--enable-disk-cache \
--enable-file-cache \
--enable-mem-cache
make && make install
make clean && make distclean
配置apache的ssl

httpd.conf中配置

#啟用ssl模塊
sed -i 's:#LoadModule ssl_module modules/mod_ssl.so:LoadModule ssl_module modules/mod_ssl.so:' /usr/local/httpd/conf/httpd.conf
sed -i 's:#LoadModule socache_shmcb_module modules/mod_socache_shmcb.so:LoadModule socache_shmcb_module modules/mod_socache_shmcb.so:' /usr/local/httpd/conf/httpd.conf
sed -i 's:#Include conf/extra/httpd-ssl.conf:Include conf/extra/httpd-ssl.conf:' /usr/local/httpd/conf/httpd.conf
httpd-ssl.conf配置
sed -i 's:#SSLCertificateChainFile "/usr/local/httpd/conf/server-ca.crt":SSLCertificateChainFile "/usr/local/httpd/conf/server-ca.crt":' /usr/local/httpd/conf/extra/httpd-ssl.conf
拷貝server.crt 、server-ca.crt、server.key到/usr/local/httpd/conf目錄下
apache結合openssl安裝過程中出現的錯誤

1、apache錯誤提示libz.a: could not read symbols: Bad value”
                   重新安裝openssl 加上-fPIC和enable-shared參數
./config -fPIC --prefix=/usr/local/openssl1.0.1 enable-shared
2、apache的httpd.conf缺乏LoadModule ssl_module modules/mod_ssl.so解決方法
                  原因是上一次編譯的緩存存,需要清除掉才能重新生成執行

make clean && make distclean

3、httpd: Syntax error on line 129 of /usr/local/cp-httpd-2.4.18/conf/httpd.conf: Cannot load modules/mod_ssl.so into server: libssl.so.1.0.0: cannot open shared object file: No such file or directory
ln -s /usr/local/ssl/lib/*.so /usr/lib64
ln -s /usr/local/ssl//lib/*.so.* /usr/lib
                  這個問題比較奇怪,命名在httpd安裝中指定了--enable-ssl和--with-ssl=/usr/local/openssl/還是無法生效,httpd只在/usr/lib64查找libssl.so.1.0.0,因此需要做個軟連接處理。

配置rewrite規則實現訪問http自動跳轉到https

實現方法是定義一個.htaccess放在httdocs中,內容為:

<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine On

RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]

ErrorDocument 404 /404.html
ErrorDocument 403 /404.html
</IfModule>
特別說明:

     apache重新編譯不會覆蓋原有的httpd.conf文件,因此如果原有沒有編譯ssl的話,httpd.conf中必須手工加上mod_ssl.so模塊配置


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM