AFN与HTTPS之一:macOS系统下启动 Apache 服务并配置 HTTPS功能

时间:2024-03-10 15:58:00

一、启动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请求