個人環境是:Linux+Apache+MySQL+PHPphp
1.下載openssl 及相關依賴html
#yum install -y openssl
2.進入目錄 /etc/pki/tls/certsnginx
#cd /etc/pki/tls/certs
3.生成私鑰文件(key)shell
#openssl genrsa -des3 -out server.key 1024
在提示後輸入密碼(密碼不顯示)apache
4.爲避免每次服務啓動都需輸入證書密碼,刪除證書密碼ruby
#openssl rsa -in server.key -out server.key
5.用server.key生成證書bash
#openssl req -new -key server.key -out server.csr
參數說明:服務器
-new:表示生成一個新證書籤署請求ide
-key:用到的私鑰文件spa
-out:證書的保存路徑
-days:證書的有效期限,單位是day(天),默認是openssl.cnf的default_days
此時根據提示完成如下信息:
Country Name (2 letter code) [XX]:CN State or Province Name (full name) []:Yangzhou Locality Name (eg, city) [Default City]:Yangzhou Organization Name (eg, company) [Default Company Ltd]:No Organizational Unit Name (eg, section) []:New Common Name (eg, your name or your server's hostname) []:No Email Address []:test@test.com Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []:#可直接回車 An optional company name []:#若上面回車,這邊直接回車
6.生成CA的key文件ca.key和根證書ca.crt
#openssl req -new -x509 -keyout ca.key -out ca.crt
此時提示信息與上一步相似
7.建立爲根證書CA所需的目錄及文件
#touch /etc/pki/CA/index.txt
8.指明證書的開始編號
#echo 01 > /etc/pki/CA/serial
#openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key -config ../openssl.cnf
根據提示輸入y,並回車
10.將ca.crt,server.crt,server.key複製到apache配置目錄
例如:個人是/usr/local/apache/conf/
我在conf中建立ssl目錄用來存放
# mkdir /usr/local/apache/conf/ssl
11.配置apache
編輯配置文件
vi /usr/local/apache/conf/httpd.conf
引入ssl配置文件,增長支持ssl:
Include conf/extra/httpd-ssl.conf 去掉前面的#
打開ssl模塊
LoadModule ssl_module modules/mod_ssl.so 去掉前面的#
若沒有找到這句,說明須要安裝依賴包:mod_ssl,安裝後就會在modules裏面找到:
在apache的源碼目錄中的modules目錄下找loggers,ssl這兩個文件,若沒有則需根據服務器apache版本下載對應版本:http://archive.apache.org/dist/httpd/
將下載好的modules下的loggers,ssl兩個文件放至你的apache的源碼目錄modules下
查找openssl路徑
whereis openssl
進入apache的源碼目錄modules/ssl中
例如個人源碼目錄爲/root/package/httpd-2.4.20
cd /root/package/httpd-2.4.20/modules/ssl執行(/usr/local/apache 是Apache的安裝目錄)
/usr/local/apache/bin/apxs -a -i -c -L/usr/lib/openssl/engines/lib -c *.c -lcrypto -lssl -ldl;完成後,在apache的安裝目錄下的modules目錄會生成一個mod_ssl.so,同時httpd.conf中會增長一行LoadModule php5_module modules/libphp5.so
編輯httpd-ssl.conf文件
vi /usr/local/apache/conf/extra/httpd-ssl.conf
寫入以下內容:
<VirtualHost *:443> ServerAdmin #輸入的郵箱地址 php_admin_value open_basedir "/home/www/:/tmp/:/var/tmp/:/proc/" DocumentRoot #工做目錄,如/home/www ServerName #域名:443 ErrorLog "/home/wwwlogs/error_log" CustomLog "/home/wwwlogs/access_log" combined SSLEngine on SSLCertificateFile /usr/local/apache/conf/ssl/server.crt#證書的路徑 SSLCertificateKeyFile /usr/local/apache/conf/ssl/server.key#證書的路徑 # SSLCertificateChainFile /usr/local/apache/conf/ssl/ca.crt#證書的路徑 Protocols h2 h2c http/1.1 <Directory "/home/www/"> SetOutputFilter DEFLATE Options FollowSymLinks AllowOverride All Order allow,deny Allow from all DirectoryIndex index.php index.html </Directory> </VirtualHost>
保存並重啓Apache
apachectl -k restart
若出現這種報錯
解決:在httpd.conf中找到
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so 去掉前面的#
保存並重啓