一、启动Apache服务
首先打开终端,输入:
sudo apachectl start
然后输入密码,回车。
打开Safari,在地址栏中输入localhost,如果出现如下页面,那么恭喜你,apache启动成功
二、制作自己的签名证书
1、生成私钥
打开终端,输入
sudo openssl genrsa 1024 > server.key
输出
Generating RSA private key, 1024 bit long modulus
.............++++++
........................................++++++
e is 65537 (0x10001)
生成了1024 bit,也就是128位的私钥文件,server.key
2、生成证书请求文件
在终端中输入
openssl req -new -key server.key > server.csr
接着系统会要求你填写一系列信息
生成了证书签名文件server.csr
3、生成自签名证书
因为只是测试用,所以生成自签名证书就够了
打开终端输入
openssl req -x509 -days 365 -key server.key -in server.csr > server.crt
-x509 表示生成的证书格式
-days 365 表示证书的有效期是365天
-key 后面加上你的私钥文件路径
-in 后面加上你的请求证书文件路径
生成的证书长这样
三、接下来开始配置Apache的PHP
打开/etc/apache2/httpd.conf文件
将 #LoadModule php5_module libexec/apache2/libphp5.so 前面的"#"去掉(取消注释).
将
#
# DirectoryIndex: sets the file that Apache will serve if a directory
# is requested.
#
<IfModule dir_module>
DirectoryIndex index.html
</IfModule>
中的 index.html 改为 index.php
然后打开终端,输入
cd /Library/WebServer/Documents //进入
sudo vim index.php //创建index.php文件
按i键后,在编辑器中输入
<?php
echo \'{"error":"0"}\';
?>
然后按esc后,输入":wq"保存并退出
然后输入
sudo apachectl restart
重启Apache服务
在浏览器中输入localhost,将显示
四、接下来开启SSL
1、打开终端,cd到刚生成证书的目录中
然后输入
sudo cp server.key /etc/apache2/
sudo cp server.crt /etc/apache2/
拷贝两个文件
因为是默认目录,所以不用修改httpd-ssl.conf文件
2、打开 httpd.conf 文件
找到
#LoadModule ssl_module libexec/apache2/mod_ssl.so
去掉前面的"#"
找到
# Secure (SSL/TLS) connections
#Include /private/etc/apache2/extra/httpd-ssl.conf
#
# Note: The following must must be present to support
# starting without SSL on platforms with no /dev/random equivalent
# but a statically compiled-in mod_ssl.
#
<IfModule ssl_module>
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>
去掉 Include 前面的 "#"
3、验证配置文件
在终端中执行
sudo apachectl configtest
返回
Syntax OK
表示配置没有问题
检查配置是否正常
此过程可能会出现语法错误提示
解决办法
打开 httpd.conf
取消
#LoadModule socache_shmcb_module libexec/apache2/mod_socache_shmcb.so
前面的"#"。
解决办法
在 httpd.conf 中加入
ServerName localhost:80
4、重启Apache
sudo apachectl restart
打开浏览器,输入
https://localhost
会发现链接旁出现了一把小锁,此时https以开启成功
五、设置HTTP自动跳转到HTTPS
打开浏览器,输入 localhost
发现并没有使用到https协议,还是使用的http协议,为了默认使用https协议,需要对URL重定向
1、打开URL重定向
打开 /etc/apache2/httpd.conf 文件,找到
#LoadModule rewrite_module libexec/apache2/mod_rewrite.so
去掉前面的"#"。
找到
#
# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#
DocumentRoot "/Library/WebServer/Documents"
<Directory "/Library/WebServer/Documents">
#
# Possible values for the Options directive are "None", "All",
# or any combination of:
# Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
#
# Note that "MultiViews" must be named *explicitly* --- "Options All"
# doesn\'t give it to you.
#
# The Options directive is both complicated and important. Please see
# http://httpd.apache.org/docs/2.4/mod/core.html#options
# for more information.
#
Options FollowSymLinks Multiviews
MultiviewsMatch Any
#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
# AllowOverride FileInfo AuthConfig Limit
#
AllowOverride None
#
# Controls who can get stuff from this server.
#
Require all granted
</Directory>
将其中的 AllowOverride None 改为 AllowOverride All
保存并退出,然后重启Apache服务
sudo apachectl restart
2、设置重定向规则
进入你的网站根目录,参考 DocumentRoot 属性,本例中为 /Library/WebServer/Documents
打开终端,输入
cd /Library/WebServer/Documents
sudo vim .htaccess
然后输入以下内容
RewriteEngine on // 开启重定向
RewriteCond %{SERVER_PORT} !^443$ // 所有端口号不是433的请求
RewriteRule (.*) https://%{SERVER_NAME}/$1 [R] // 全部重定向为https请求
保存并退出
重启Apache服务
再次打开浏览器输入 localhost ,已经使用https了。
AFN与HTTPS之二:iOS中使用AFN发起HTTPS请求