Apache Https配置

Apache Https配置

  • 以下配置平台为Ubuntu16.04

安装Apache2

sudo apt-get update
sudo apt-get install apache2
  • 测试,访问http://localhost/
    Apache Https配置
  • 查看Apache Service启动状态(包含启动错误信息)
service apache2 status
  • 问题:Apache默认采用80端口。如果该端口已被占用,会导致Apache启动失败。出现该问题时,修改端口即可。
# apace配置文件路径
cd /etc/apache2/
# 修改端口配置文件
vim ports.conf
# 将端口80修改为其他端口
#  将Listen 80 修改为空闲端口,这里改成8026
Listen 8026

CA创建

  • 证书:证书是用来确保通信安全的机制。打个比方,认证机构就是国家,网站就是人,证书就是身份证。由国家,给你身份证后,你就是这个国家的合法公民了。
  • CA(证书颁发机构):申请证书的机构,一般申请证书都是需要一定得费用。为了测试方便,这里我们自己做一个CA,把自己当成CA去签发证书。
# 创建CA秘钥
openssl genrsa -aes256 -out ca.key.pem 2048
# 生成csr
openssl req -new -key ca.key.pem -out ca.csr 
-subj "/C=CN/ST=SZ/L=SZ/O=kyfxbl/OU=linduotest/CN=*.linduotest.net"
# 签发ca根证书
openssl x509 -req -days 3650 -sha1 -extensions v3_ca -signkey ca.key.pem -in ca.csr -out ca.cer
  • 获得了ca.key.pem和ca.cer后,我们就可以去签发证书了。

Server证书

  • Server证书,就是https网站的证书了。
  • 相对的,client端也可以有证书。https双向验证时,需要client端将证书发给service。
  • 这里,我们只需要https单向验证即可。
# 创建service秘钥
openssl genrsa -aes256 -out server.key.pem 2048

# 创建csr
openssl req -new \
    -sha256 \
    -key server.key.pem  \
    -subj "/C=CN/ST=SZ/L=SZ/O=kyfxbl/OU=kyfxbl/CN=www.linduotest.net" \
    -reqexts SAN \
    -config <(cat /etc/ssl/openssl.cnf \
        <(printf "[SAN]\nsubjectAltName=DNS:*.linduotest.net")) \
    -out server.csr
 
 # CA签发server证书
 openssl ca -in server.csr \
        -md sha256 \
        -keyfile ca.key.pem \
    -cert ca.cer \
    -extensions SAN \
    -config <(cat /etc/ssl/openssl.cnf \
        <(printf "[SAN]\nsubjectAltName=DNS:*.linduotest.net")) \
    -out server.crt

配置Apache Https

  • 开启ssl模块
sudo a2enmod ssl
  • 启用ssl站点
sudo a2ensite default-ssl
  • 加入监听端口(https端口为443)
cd /etc/apache2/
vim ports.conf
# 将Listen那一行修改为
Listen 80 443
  • 配置ssl证书位置
cd /etc/apache2/sites-available
vim default-ssl.conf
# 修改内容如下
# 指定成自己的路径即可
ServerName www.linduotest.net:443
SSLCertificateFile  /home/linduo/Work/apacheSSL/server.crt
SSLCertificateKeyFile /home/linduo/Work/apacheSSL/server.key.pem
  • 重新加载配置
sudo a2enmod rewrite
  • 重启apache服务
sudo /etc/init.d/apache2 restart

测试https

  • 域名(由于证书了设置了域名,最好使用该方式验证)
vim /etc/hosts
# 加入 ip 域名映射即可
# 例
linduo的ip  www.linduotest.net
#window下修改如下文件
C:\Windows\System32\drivers\etc\hosts
  • IP方式,直接输入https://服务器IP即可
  • 证书添加方式(HTTPS或浏览器开发者,并且通过自己的证书验证https。如果不是这种情况,请不要考虑该方式。一般来讲,市场上的浏览器不会让你将非官方的证书导入的。)将ca.cer证书中的内容,全部追加到验证HTTPS时,使用的证书中即可。