为 Apache 网站生成 SSL 证书
SSL 证书需要从证书颁发机构 或者 阿里云等代理中购买。 这里我们使用自己生成的证书,仅供演示使用,并不能直接用于生产环境, 网站使用者并不信任自制的证书。
每个通过 HTTPS 运行的网站都必须具有客户端浏览器所需的 SSL(安全套接字层)证书,以验证网站的真实性。
此 SSL 证书应由经过验证的 CA(证书颁发机构)进行数字签名。
否则,如果我们使用的是未签名或者自签名的证书,客户端浏览器将显示“安全证书未经验证,我们不得继续访问此网站”等警告。
无论 SSL 证书是否签名,在这两种情况下,通信都是以加密形式进行的。
因此,简单来说,如果我们想忽略来自客户浏览器的警告消息,而不是由证书颁发机构对 SSL 证书进行数字签名,或者以其他方式培训用户忽略安全警告并将网站添加到他们浏览器的例外列表中。
我们使用 Linux 实用程序 openssl 生成自签名 SSL 证书和私钥。
[root@centos7.onitroad.com ~]# mkdir /etc/httpd/ssl [root@centos7.onitroad.com ~]# openssl req -x509 -nodes -days 1095 -newkey rsa:2048 -out /etc/httpd/ssl/lampserver.crt -keyout /etc/httpd/ssl/lampserver.key Generating a 2048 bit RSA private key ..............................+++ ...............+++ writing new private key to '/etc/httpd/ssl/lampserver.key' ---- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ---- Country Name (2 letter code) [XX]:CN State or Province Name (full name) []:ZJ Locality Name (eg, city) [Default City]:Hangzh Organization Name (eg, company) [Default Company Ltd]:None Organizational Unit Name (eg, section) []:IT Common Name (eg, your name or your server's hostname) []:centos7.onitroad.com Email Address []:root@centos7.onitroad.com.test.local [root@centos7.onitroad.com ~]# ls /etc/httpd/ssl/ lampserver.key lampserver.crt [root@centos7.onitroad.com ~]#
在这里,Common Name (CN) 非常重要,因为它是用户访问网站时使用的主机名/域名。
如果 Common Name 与主机/域名不同,用户将收到证书错误。
在 CentOS 7 中的 Apache 上安装 SSL 证书
要在 Apache HTTP Server 上安装 SSL 证书,我们必须安装 mod_ssl 包。
使用 mod_ssl 模块在 Apache HTTP Server 中添加了 SSL 功能。
使用 yum 命令安装 mod_ssl 包。
[root@centos7.onitroad.com ~]# yum install mod_ssl
mod_ssl 在 Apache 配置目录中安装 SSL 配置文件。
编辑 /etc/httpd/conf.d/ssl.conf 并其中添加以下指令以安装 SSL 证书。
SSLCertificateFile /etc/httpd/ssl/lampserver.crt SSLCertificateKeyFile /etc/httpd/ssl/lampserver.key
如果 SSL 证书由 CA 数字签名,那么我们还必须添加 CA 证书文件。
SSLCACertificateFile /etc/httpd/ssl/ca-bundle.crt
重新启动 httpd.service 使更改生效。
[root@centos7.onitroad.com ssl]# systemctl restart httpd.service
在客户端的浏览器中打开网站。
客户的浏览器显示安全警告,因为我们的网站使用的是自签名 SSL 证书。
在客户端的浏览器中添加安全例外。
单击确认安全例外。
现在我们的 Apache 网站通过 HTTPS 运行,我们可以在地址列上看到绿色锁图标。
配置环境
- 主机名 - centos7.onitroad.com
- IP 地址 - 192.168.1.67/24
- 操作系统 - CentOS 7.3
- Apache HTTP 服务器 - Apache 2.4.6
已经安装了 Apache HTTP Server, 并且在80端口上运行。
我们需要让网站运行在 HTTPS 端口 443/tcp。
Apache服务器如何配置HTTPS?
在本文中,我们将在 CentOS 7 中使用 mod_ssl 在 Apache HTTP 服务器上安装 SSL 证书。