Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源代码的网页服务器软件,可以在大多数电脑操作系统中运行,由于其跨平台和安全性。被广泛使用,是最流行的Web服务器软件之一,快速,可扩展性强,是 Apache http 服务器的特点。
Apache HTTP Server 默认开启 HTTP 也就是 80 端口,并提供 HTTP 服务,但也可以通过创建证书和简单的配置,打开 HTTPS 用于安全连接,用于加密通讯,如果仅仅是为了加密通讯,则可以自己生成证书,也可向认证机构申请,本文将介绍自己生成证书。
以下配置基于 Apache http 2.4.17 / 2.4.18 撰写。
以 FreeBSD 系统为例:
控制台进入 apache/bin 目录,运行 openssl 程序完成生成 key 的任务,需要以下几个步骤:
# Generating RSA 算法生成 2048 bit Key
openssl genrsa -out server.key 2048
# 或者 des3 算法的 2048 bit Key, 任选一种
openssl genrsa -des3 -out server.key 2048
# 做一个 server.key 的备份(可选操作)
openssl rsa -in server.key -out server.key.unsecure
# 生成 RSA 私钥,需要填写一些信息
# openssl req -new -key server.key -out server.csr
openssl req -config ../conf/openssl.cnf -new -key server.key -out server.csr
# 创建一个自签名的证书,需要填写一些信息
# openssl req -new -x509 -nodes -sha1 -days 3650 -key server.key -out server.crt -extensions usr_cert
openssl req -config ../conf/openssl.cnf -new -x509 -nodes -sha1 -days 3650 -key server.key -out server.crt -extensions usr_cert
至此,证书制作完成,Apache https 安全配置需要两个文件,分别是 server.crt 和 server.key,将这两个文件拷贝到apache/conf 目录。
编辑 httpd.conf 文件
# 添加 443 侦听
Listen 443
# 打开 SSL 模块
LoadModule ssl_module modules/mod_ssl.so
# 虚拟主机设置,修改端口,并补充以下几项
<VirtualHost *:443>
...
...
SSLEngine on
SSLCertificateFile conf/server.crt
SSLCertificateKeyFile conf/server.key
</VirtualHost>
重启服务器
便可以通过 https://localhost 访问主机,见到类似下图的提示,便可确认 https 安全连接设置完成,且已经成功通过浏览器打开,而浏览器和服务器之间也将通过加密数据进行通讯。
资料参考来源
https://httpd.apache.org/docs/2.4/ssl/ssl_faq.html
https://httpd.apache.org/docs/2.4/ssl/