可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
I am writing a php app on my local machine and would like to test to see if SSL is working. Bear with me because this is the first time I've ever used SSL.
So far this is what I've done:
- Created a SSL Certificate. I followed the first part of this this tutorial to create the certificate.
- I imported the
server.crt
file into chrome. - Removed the semicolon in front of
;extension=php_openssl.dll
in php.ini
(reference) - Edited my
httpd-vhosts.conf
file based on this page. The relevant section of that file is below. This is the full file: http://pastebin.com/k6Jh2eR6 DocumentRoot "C:\Users\user_name\Documents\project_one" ServerName project_one.localhost SSLEngine on SSLCertificateFile "conf/ssl.crt/server.crt" SSLCertificateKeyFile "conf/ssl.key/server.key" AllowOverride All Order allow,deny Allow from all
I would usually access my project by typing in http://project_one.localhost
When trying to access my project by typing https://project_one.localhost
into chrome I automatically get forwarded to https://project_one.localhost/xampp/
(as if XAMPP doesn't recognize https://project_one.localhost
as a subdomain at all and treats it as if I'm typing in https://localhost
) Any idea where I'm screwing up?
NOTE:
LoadModule ssl_module modules/mod_ssl.so
was uncommented in httpd.conf
file
回答1:
SSL, of the HTTPS://url.here/
variety, is entirely handled by Apache and has nothing to do with PHP, or any of PHP's extensions/modules, or any php.ini settings.
A typical SSL Enabled VirtualHost looks like this and contains at least these parts...
DocumentRoot "C:/WampDeveloper/Websites/www.example.com/webroot" ServerName www.example.com ServerAlias example.com SSLEngine On SSLCertificateFile "C:/WampDeveloper/Websites/www.example.com/certs/public.crt" SSLCertificateKeyFile "C:/WampDeveloper/Websites/www.example.com/certs/private.key" Options All AllowOverride All order allow,deny allow from all
(The paths above are from my WampDeveloper Pro set up, Xampp's will be slightly different)
Your
line is faulty. It needs a port number, which is always 443 for an HTTPS:// URL, in combination with either an IP address or a star before it. And if using a star, also a NameVirtualHost *:443
line...
NameVirtualHost *:80 NameVirtualHost *:443 DocumentRoot "C:\xampp\htdocs" ServerName localhost DocumentRoot "C:\Users\user_name\Documents\project_one" ServerName project_one.localhost SSLEngine on SSLCertificateFile "conf/ssl.crt/server.crt" SSLCertificateKeyFile "conf/ssl.key/server.key" AllowOverride All Order allow,deny Allow from all DocumentRoot "C:\Users\user_name\Documents\project_two" ServerName project_two.localhost AllowOverride All Order allow,deny Allow from all
回答2:
This may be an old question, but i am putting my answer here anyway for future reference
i'm Using XAMPP 3.2.1, Compiled May,7 2013
to enable VirtualHost
with SSL
at the same time here is what i did. (I'm using windows 7)
- your windows
HOST
file must already be setup - Go to
httpd-ssl.conf
located at xampp\apache\conf\extra
I just copied the _default_
virtualhost
and added my config. I removed all comments for shorter one and pasted this just below the default virtualHost
just change the DocumentRoot
and servername
then Restart apache.
DocumentRoot "***path/to/your/project}***" ServerName ***yourdomain*** ServerAdmin admin@example.com ErrorLog "C:/xampp/apache/logs/error.log" TransferLog "C:/xampp/apache/logs/access.log" SSLEngine on SSLCertificateFile "conf/ssl.crt/server.crt" SSLCertificateKeyFile "conf/ssl.key/server.key" SSLOptions +StdEnvVars SSLOptions +StdEnvVars BrowserMatch "MSIE [2-5]" \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0 CustomLog "C:/xampp/apache/logs/ssl_request.log" \ "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
回答3:
Which version of Apache are you using ? NameVirtualHost is not available in 2.4 version.
Uncomment the line Include conf/extra/httpd-ssl.conf
in httpd.conf and add the following contents (fix the paths according to xampp's path). This will enable https://localhost
Listen 443 AddType application/x-x509-ca-cert .crt AddType application/x-pkcs7-crl .crlss phrase on stdout. SSLPassPhraseDialog builtin SSLSessionCache "shmcb:E:/PROGRA\~1/AMPPS/apache/logs/ssl_scache(512000)" SSLSessionCacheTimeout 300 Mutex default DocumentRoot "E:/Program Files/AMPPS/www" ServerName localhost:443 ServerAdmin you@127.0.0.1 ErrorLog "E:/Program Files/AMPPS/apache/logs/ssl_error.log" TransferLog "E:/Program Files/AMPPS/apache/logs/ssl_access.log" SSLEngine on SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL SSLCertificateFile "E:/Program Files/AMPPS/apache/conf/ssl_crt/server.crt" #SSLCertificateFile "E:/Program Files/AMPPS/apache/conf/server-dsa.crt" SSLCertificateKeyFile "E:/Program Files/AMPPS/apache/conf/ssl_key/server.key" SSLOptions +StdEnvVars SSLOptions +StdEnvVars BrowserMatch ".*MSIE.*" \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0 CustomLog "E:/Program Files/AMPPS/apache/logs/ssl_request.log" \ "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
If you want other domain like project_one.localhost have secured http connection then add the following virtualhost in httpd.conf or httpd-vhosts.conf(must be included in httpd.conf)
Options FollowSymLinks Indexes AllowOverride All Order deny,allow allow from All ServerName project_one.localhost ServerAlias project_one.localhost ScriptAlias /cgi-bin/ "e:/program files/ampps/www/project_one.localhost/cgi-bin/" DocumentRoot "e:/program files/ampps/www/project_one.localhost" SSLEngine on SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL SSLCertificateFile "E:\Program Files\AMPPS/apache/conf/ssl_crt/project_one.localhost.crt" SSLCertificateKeyFile "E:\Program Files\AMPPS/apache/conf/ssl_key/project_one.localhost.key" ErrorLog "E:/Program Files/AMPPS/apache/logs/project_one.localhost_ssl_error.log" TransferLog "E:/Program Files/AMPPS/apache/logs/project_one.localhost_ssl_access.log" SSLOptions +StdEnvVars SSLOptions +StdEnvVars BrowserMatch ".*MSIE.*" \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0 CustomLog "E:/Program Files/AMPPS/apache/logs/project_one.localhost_ssl_request.log" \ "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
Note : You will have to add an entry in hosts file 127.0.0.1 project_one.localhost
回答4:
Here is simple step.
- Go to C:\xampp\apache\conf And Enable the ssl extensions (Remove # from line)
LoadModule ssl_module modules/mod_ssl.so
- Go to C:\xampp\apache\conf\extra
Add new virtual hosts or edit existing
DocumentRoot "C:/xampp/htdocs/PROJECTNAME" ServerName www.pl.f24sdev.com AllowOverride All Order Deny,Allow Allow from all SSLEngine on SSLCertificateFile "conf/ssl.crt/server.crt" SSLCertificateKeyFile "conf/ssl.key/server.key"