mac 配置https
参考:http://www.cnblogs.com/y500/p/3596473.html
证书生成
1.生成主机密钥
这里会要求输入密码,不输入,直接回车
mkdir /private/etc/apache2/ssl
cd /private/etc/apache2/ssl
sudo ssh-keygen -f server.key
2.生成证书请求文件
sudo openssl req -new -key server.key -out request.csr
3.生成ssl证书
用上一步生成的文件生成ssl证书
sudo openssl x509 -req -days 365 -in request.csr -signkey server.key -out server.crt
到这里,自签名证书就生成好了,下面就开始配置Apache
配置Apache
4 配置httpd.conf
/private/etc/apache2/httpd.conf ,找到并编辑这个文件去掉下面三行前面的 '#'
LoadModule ssl_module libexec/apache2/mod_ssl.so
Include /private/etc/apache2/extra/httpd-ssl.conf
Include/private/etc/apache2/extra/httpd-vhosts.conf
我在第一次配置的时候以为没有mod_ssl.so文件,就专门搜了一次,还brew安装,都找不到,最后发现直接取消#注释就可以,并不需要特意找这个文件
5 配置httpd-ssl.conf
/private/etc/apache2/extra/httpd-ssl.conf,编辑这个文件去掉下面两行前面的 '#'
SSLCertificateFile "/private/etc/apache2/ssl/server.crt"
SSLCertificateKeyFile "/private/etc/apache2/ssl/server.key"
这个路径就是刚才生成的证书文件的路径
6 配置httpd-vhosts.conf
/private/etc/apache2/extra/httpd-vhosts.conf ,编辑这个文件在 'NameVirtualHost*:80'后面添加:
NameVirtualHost *:443
其实我电脑上的配置文件没有NameVirtualHost,因此我没有配置这个,最终是可以访问https的
在文件末尾添加:
<VirtualHost *:443>
SSLEngine on
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
SSLCertificateFile /private/etc/apache2/ssl/server.crt
SSLCertificateKeyFile /private/etc/apache2/ssl/server.key
ServerName localhost
DocumentRoot "/Library/WebServer/Documents"
</VirtualHost>
其中代码中的:DocumentRoot "/Library/WebServer/Documents"是网页路径,我用的是默认的WebServer的Documents
SSLCertificateFile 和SSLCertificateKeyFile与上面的httpd-ssl.conf中的SSLCertificateFile和SSLCertificateKeyFile相同,是自己第一步生成证书的位置
到这里就配置完了,检查配置,没问题的话重启Apache就好了
sudo apachectl configtest
sudo apachectl restart
正常的话,就可以用https访问了。
出现的问题:
1 test的时候报错:SSLSessionCache: 'shmcb' session cache not supported
配置好后执行命令
sudo apachectl configtest
得到报错如下:
AH00526: Syntax error on line 92 of /private/etc/apache2/extra/httpd-ssl.conf:
SSLSessionCache: 'shmcb' session cache not supported (known names: ). Maybe you need to load the appropriate socache module (mod_socache_shmcb?).
再次执行命令:
sudo apachectl configtest
返回
Syntax OK
restart之后,就可以访问了
2 vim文件的时候E45: 'readonly' option is set (add ! to override)
文件编辑完成输入:wq之后报错
E45: 'readonly' option is set (add ! to override)
一般这些配置文件都是只读的,需要sudo才可以,我尝试:wq!也是不行的,只能关闭文件,重新打开
如:
sudo vim /private/etc/apache2/httpd.conf