title: Mac中开启Apache的Https功能
type: categories
date: 2016-12-26 13:22:26
categories: PHP
tags: [Apache, Https]
为Mac中自带的Apache开启Https功能,证书是自签名的证书。
以下内容是针对已经配置过Apache,能够利用 http://localhost打开网页的基础上的设置。
配置SSL
在终端创建SSL路径
sudo mkdir /etc/apache2/ssl
接下来创建一个私钥key和证书
sudo openssl genrsa -out /etc/apache2/ssl/server.key 2048
sudo openssl req -new -x509 -key /etc/apache2/ssl/server.key -out /etc/apache2/ssl/server.crt -days 3650 -subj /CN=localhost
最后,添加证书到钥匙串并信任改证书
sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain /etc/apache2/ssl/server.crt
配置SSL虚拟主机
1、在终端,编辑httpd.conf
sudo vi /etc/apache2/httpd.conf
找到下面三行, 在英文输入状态下,点击i
,进入编辑状态,并将前面的 #
去掉,去掉#之后,control+c
退出编辑,再执行:wq
回到终端。
LoadModule socache_shmcb_module libexec/apache2/mod_socache_shmcb.so
LoadModule ssl_module libexec/apache2/mod_ssl.so
Include /private/etc/apache2/extra/httpd-ssl.conf
2、在终端,编辑httpd-vhosts.conf
sudo vi /etc/apache2/extra/httpd-vhosts.conf
添加端口443的虚拟主机
注意: ServerName
字段要和 .crt证书生成时的CN
(CommonName)字段相一致(可以是域名,也可以是IP,建议用IP),即本例中的 ServerName localhost
与CN=localhost
<VirtualHost *:443>
ServerName localhost
DocumentRoot "/Users/indieweb/Sites/localhost"
SSLEngine on
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
SSLCertificateFile /etc/apache2/ssl/server.crt
SSLCertificateKeyFile /etc/apache2/ssl/server.key
<Directory "/Users/indieweb/Sites/localhost">
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
Require all granted
</Directory>
</VirtualHost>
回到终端,执行
sudo vi /etc/apache2/extra/httpd-vhosts.conf
配置SSLCertificateFile
和SSLCertificateKeyFile
文件路径
SSLCertificateFile "/etc/apache2/ssl/server.crt"
SSLCertificateKeyFile "/etc/apache2/ssl/server.key"
回到终端,执行以下指令,如果出现Syntax OK
,则代表配置成功
sudo apachectl configtest
最后,重启Apache
sudo apachectl restart
如果一切顺利的话,就可以在浏览器中打开 https://localhost
到此就完成配置了。
局域网内的HTTPS配置
如果想让局域网内的其他浏览器打开你的网页,则需要将 ServerName和CommonName设置成你的电脑的IP,当然证书都需要重新生成并替换;
同时访问地址变为:https://你的ip地址
注意:要想在iPhone的Safari中访问这个站点,首先ServerName和CommonName一定是IP地址,其次手机要事先安装你生成的server.crt
证书,不然Safari会一直处于尝试访问这个的站点的状态,即一闪一闪的现象。