Apache服务器搭建并添加SSL
学习了使用 Apache 搭建网站
在红帽上学习了用 Apache 搭建网站并添加了 SSL 证书
虽说之前也用过 Nginx 和 Apache 搭建过网站,但还是记录一下吧,这次着重学习了自签 SSL 证书和使用自签的 SSL 证书
搭建一个最基本的网站
在给网站添加 SSL 证书之前,你得有一个简单的网页
安装软件
红帽自带了openssl,可以通过命令查看
1 |
|
安装 Apache 和 ssl 模块
1 |
|
创建一个网页
Apache 的默认静态页面的目录是 /var/www/html
,这里我就换一个根目录
创建网页的根目录
1 |
|
创建 /web/index.html
文件并编辑网页内容
1 |
|
修改目录的权限,添加可执行的权限
1 |
|
修改配置
修改 Apache 的配置文件 /etc/httpd/conf/httpd.conf
设置监听端口为8080
设置如下的119行根目录DocumentRoot
和131行目录路径 <Directory>
,保存并退出
关闭防火墙、selinux
1 |
|
启动 Apache 服务
1 |
|
此时客户端浏览器打开 服务器IP:8080
就可以看到刚才的静态页面了,最简单的静态网页搭建完成
为网站添加 SSL 证书
这里我是使用了自签的 SSL 证书,顺便又学了一次 openssl 的使用
CA 服务器生产私钥和证书
CA 服务器生成私钥,并修改其权限为 600
1 |
|
修改 openssl.cnf 文件,红帽上的位置和之前 Arch Linux 和 Ubuntu 的路径相差比较大,它的路径为 /etc/pki/tls/openssl.cnf
修改 [ req_distinguished_name ]
下的各信息,此处填写的是 CA 服务器的默认各种信息,在生成自签证书时直接使用这些默认设置即可,在后面 Apache 服务器生产申请请求文件时,这些信息要一致,否则无法生成自签证书
生成自签证书
1 |
|
在生成证书的时候填写信息都直接回车使用默认即可,在设置 Common Name
时填写 CA 服务器的主机名
继续修改 /etc/pki/tls/openssl.cnf
文件,设置已签署的证书、证书序列号等文件的路径
创建这些目录和文件
1 |
|
如果原本就是设置好的,目录应该也是原本就存在的,只需要创建两个文件即可
HTTP 服务器申请证书
创建 SSL 目录
1 |
|
生成私钥并修改权限为600
1 |
|
用私钥生成请求
1 |
|
在生成请求文件的时候,注意与CA上的设置的参数要一致,Common Name
设置为要添加 SSL 的网站的域名
将证书发送给 CA 服务器
1 |
|
CA 服务器颁发证书
CA 服务器用如下命令颁发证书,证书有效时长为10年
1 |
|
签发完成后,可以查看 index.txt
文件和 serial
文件,可以看到有签署的记录在里面
1 |
|
HTTP 服务器添加 SSL
将证书下载到 HTTP 服务器的 /etc/httpd/ssl
目录下
1 |
|
搭建虚拟主机
虚拟主机可以使不同的域名访问同一个IP下的不同目录,实现一台服务器上搭建多个网页的目的
编辑 /etc/httpd/conf/httpd.conf
文件,修改网站的根目录,注释掉即可
创建并编辑文件 /etc/httpd/conf.d/virtualhost.conf
1 |
|
编辑 /etc/httpd/conf.d/ssl.conf
文件,大约从第56行开始,按实际情况修改
1 |
|
可以用如下命令测试配置是否正确
1 |
|
重启 httpd 服务
1 |
|
客户端访问 https://hello.com
如果无法访问可能是因为没有域名到IP的解析的原因,要么搭建一个 DNS 解析域名到 HTTP 服务器,要么添加一条 hosts
1 |
|
然后浏览器再此打开 https://hello.com
就可以看到如下页面了
这说明 SSL 已经成功添加到 HTTP 的服务器中了,之所以出现这个页面是因为使用的是自签证书,被识别为不安全网站了,但是和网页直接的交互已经是加密了的
以前虽然是用过 Apache 搭建过 http 服务的,但没有像这样一步一步的学习过来,每一步都知道在干什么
而且还又学习了一次自签 SSL 证书,并添加 SSL 证书到 HTTP 服务器中 < ( ̄︶ ̄)>