windows Apache 環境下配置支持HTTPS的SSL證書

windows Apache 環境下配置支持HTTPSSSL證書

1.準備工做php

1)在設置Apache + SSL以前, 須要作:html

安裝Apache, 下載安裝Apache時請下載帶有SSL版本的Apache安裝程序.web

而且ssl須要的文件在以下的位置:apache

    [Apache安裝目錄]/modules/ mod_ssl.sowindows

    [Apache安裝目錄]/bin/ openssl.exe, libeay32.dll, ssleay32.dll, openssl.cnf安全

    [Apache安裝目錄]/conf/ openssl.cnf服務器

建立SSL證書(注意,有的集成環境裏面自帶了openssl,可是bin目錄下沒有openssl.cnf,須要將conf下的openssl.cnf拷貝一份到bin目錄下,但整體原理同樣)session

2)在windows環境下需先設置Openssl環境變量:app

執行命令  set OPENSSL_CONF=..\conf\openssl.cnfide

 

打開CMD,進入到Apache安裝目錄下的bin目錄下:

步驟一:執行命令 openssl genrsa 1024 >server.key

說明:RSA密鑰對的默認長度是1024,取值是2的整數次方,而且密鑰長度約長,安全性相對會高點。

 

完成密鑰server.key生產完畢後進行步驟二操做。

 

步驟二:生產爲簽署的server.csr,繼續在bin目錄下執行命令:

openssl req -new -config openssl.cnf -key server.key >server.csr

說明:若是不加-config .openssl.cnf參數的話,常會報Unable to load config info from .../ssl/openssl.cnf

 

以後就會要求輸入一系列的參數:

    Country Name (2 letter code) [AU]:CN ISO 國家代碼(只支持兩位字符)

    State or Province Name (full name) [Some-State]:ZJ 所在省份

    Locality Name (eg, city) []:HZ 所在城市

    Organization Name (eg, company): yiban公司名稱

    Organizational Unit Name (eg, section) []:yiban 組織名稱

    Common Name (eg, YOUR name) []: localhost:80申請證書的域名(建議和httpd.confserverName必須一致)

    Email Address []:admin@admin.com 管理員郵箱

    Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: 1234交換密鑰

An optional company name []:CD

注:Common Name建議和httpd.confserverName必須一致,不然有可能致使apache不能啓動

(啓動 apache 時錯誤提示爲:server RSA certificate CommonName (CN) `Kedou' does NOT match server name!?)完成簽署的server.csr配置。

步驟三:

簽署服務器證書文件 server.crt

     bin/目錄下執行命令:    

openssl req -x509 -days 5000 -config openssl.cnf -key server.key -in server.csr >server.crt

說明:這是用步驟 1,2 的的密鑰和證書請求生成證書 server.crt-days 參數 指明證書有效期,單位爲天,x509 表示生成的爲 X.509 證書。

步驟四:

bin 目錄下,找到server.crtserver.csrserver.key三個文件,將此三個文件剪切到Apacheconf目錄下。

步驟五:

配置 httpd.conf. Apacheconf\extra目錄下的 httpd_ssl.conf 文件是關於 ssl 的配置,是httpd.conf的一部分。

httpd.conf 中添加下列兩行(有的話把文件前面的註釋「#」符號去掉):

LoadModule ssl_module modules/mod_ssl.so

Include conf/extra/httpd-ssl.conf      

步驟六:

  (注意:相同部分被省略掉)

conf\extra目錄下,編輯 httpd_ssl.conf

Listen 443

SSLPassPhraseDialog  builtin

SSLSessionCache   "dbm:c:/Apache24/logs/ssl_scache"

#SSLSessionCache  "shmcb:c:/Apache24/logs/ssl_scache(512000)"

(以上2種請自行監測,若有一種致使服務器啓動不了,就換成另外一種)

SSLSessionCacheTimeout  300

<VirtualHost www.my.com:443>

    #DocumentRoot "D:/wamp/bin/apache/apache2.4.9/htdocs"

    DocumentRoot "C:/wamp/www/hxq"

    ServerName  www.my.com:443

    ServerAlias my.com:443

    ServerAdmin webmaster@chinancce.com

    DirectoryIndex index.html index.htm index.php default.php app.php u.php

    ErrorLog logs/example_error.log

    CustomLog logs/example_access.log \

    "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

    SSLEngine On

    SSLCertificateFile "C:/wamp/bin/apache/apache2.4.9/conf/server.crt"

    SSLCertificateKeyFile "C:/wamp/bin/apache/apache2.4.9/conf/server.key"

    #SSLCertificateChainFile "C:/upupw/Apache2/conf/1_root_bundle.crt"

<FilesMatch "\.(shtml|phtml|php)$">

    SSLOptions +StdEnvVars

</FilesMatch>

    BrowserMatch "MSIE [2-5]" \

    nokeepalive ssl-unclean-shutdown \

    downgrade-1.0 force-response-1.0

<Directory "C:/wamp/www/hxq">

    Options FollowSymLinks

    AllowOverride All

    Order allow,deny

    Allow from all

</Directory>

</VirtualHost>

以上最容易出問題的地方是http_ssl.conf中的日誌等路徑問題,建議按照物理路徑進行設置

步驟七:

調試運行Apache,對於Apache。若是是集成板的如xamppwampserver,或者phpstudy啓動Apache Server,可能咱們不知道咱們的服務器出現了什麼問題,建議查看 Apache/logs下的日誌,在此基礎上,配合cmd命令行在bin目錄下運行httpd命令,若是不報錯,說明服務器運行沒問題,不然更具提示修改問題

2.測試運行

 重啓apahce服務,訪問https://www.my.com/,完工!

===========出現錯誤聚集==========

 

一、"Syntax error on line 80 of c:/apache/conf/extra/httpd-ssl.conf:ErrorLog takes one argument,The filename of the error log"或者"Syntax error on line 99 of c:/apache/conf/extra/httpd-ssl.conf:SSLCertificateFile takes one argument,SSL Server Certificate file ('/path/to/file' -PEM or DER encoded)"

解決方法:文件路徑加雙引號

2"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

把前面的註釋去掉。

相關文章
相關標籤/搜索