前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,不由得分享一下给大家。点击跳转到网站。
简介
本教程将指导您设置和配置利用 SSL 证书保护的 Apache 服务器。在教程结束时,您将拥有一个可以通过 HTTPS 访问的服务器。
SSL 基于将大整数解析为其同样大的质因数的数学困难。利用这一点,我们可以利用私钥-公钥对加密信息。证书颁发机构可以颁发验证此类安全连接真实性的 SSL 证书,同时,也可以在没有第三方支持的情况下生成自署名证书。
在本教程中,我们将生成一个自署名证书,进行须要的配置,并测试结果。自署名证书非常得当测试,但会导致用户在欣赏器中出现错误,因此不建议用于生产环境。
如果您想要获取付费证书,请参阅本教程。
先决条件
要完成本教程,您须要:
- 一个全新的 Debian 8 Droplet
- 一个 sudo 非根用户,您可以按照本教程的步骤 2 和 3 进行设置
- 已安装并更新的 OpenSSL(默认情况下应该已安装)
- sudo apt-get update
- sudo apt-get upgrade openssl
复制代码 您大概须要另一台已安装 OpenSSL 的盘算机进行测试:
- 另一个 Linux Droplet
- 或者,一个基于 Unix 的本地系统(Mac、Ubuntu、Debian 等)
步骤 1 — 安装 Apache
在这一步中,我们将利用名为 apt-get 的内置软件包安装步调。它极大地简化了软件包管理,并促进了干净的安装。
在先决条件中指定的链接中,您应该已经更新了 apt-get 并安装了 sudo 软件包,由于与其他 Linux 发行版差异,Debian 8 不会预装 sudo。
Apache 将成为我们的 HTTPS 服务器。要安装它,请运行以下命令:
- sudo apt-get install apache2
复制代码 步骤 2 — 启用 SSL 模块
在本节中,我们将在服务器上启用 SSL。
首先,启用 Apache SSL 模块。
默认的 Apache 网站附带了一个有效的模板,用于启用 SSL,因此我们如今将激活默认网站。
- sudo a2ensite default-ssl
复制代码 重新启动 Apache 以使这些更改收效。
- sudo service apache2 reload
复制代码 步骤 3 — 创建自署名 SSL 证书
首先,让我们创建一个新目录,用于存储私钥和证书。
- sudo mkdir /etc/apache2/ssl
复制代码 接下来,我们将请求一个新证书并对其进行署名。
首先,生成一个新证书和一个用于保护它的私钥。
- days 标志指定证书应保持有效的时间。利用此示例,证书将持续一年
- keyout 标志指定我们生成的密钥的路径
- out 标志指定我们生成的证书的路径
- sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt
复制代码 调用此命令将导致一系列提示。
- 通用名称:指定您服务器的 IP 地址或主机名。此字段很重要,由于您的证书须要与您网站的域名(或 IP 地址)匹配
- 根据本身的意愿填写其他所有字段。
下面以红色显示示例答案。
- [secondary_label Interactive]
- 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) [AU]:US
- State or Province Name (full name) [Some-State]:New York
- Locality Name (eg, city) []:NYC
- Organization Name (eg, company) [Internet Widgits Pty Ltd]:DigitalOcean
- Organizational Unit Name (eg, section) []:SSL Certificate Test
- Common Name (e.g. server FQDN or YOUR name) []:example.com
- Email Address []:test@example.com
复制代码 设置文件权限以保护您的私钥和证书。
- sudo chmod 600 /etc/apache2/ssl/*
复制代码 有关三位数权限代码的更多信息,请参阅有关 Linux 权限的教程。
您的证书和用于保护它的私钥如今已准备好供 Apache 利用。
步骤 4 — 配置 Apache 利用 SSL
在本节中,我们将配置默认的 Apache 虚拟主机以利用 SSL 密钥和证书。进行此更改后,我们的服务器将开始为默认站点提供 HTTPS 而不是 HTTP 请求。
利用 nano 或您喜欢的文本编辑器打开服务器配置文件。
- sudo nano /etc/apache2/sites-enabled/default-ssl.conf
复制代码 找到以 <VirtualHost _default_:443> 开头的部分,并进行以下更改。
- 在 ServerAdmin 电子邮件行的下面添加一行,直接输入您的服务器名称。这可以是您的域名或 IP 地址:
- ServerAdmin webmaster@localhost
- ServerName example.com:443
复制代码
- 找到以下两行,并更新路径以匹配我们之前生成的证书和密钥的位置。如果您购买了证书或在其他地方生成了证书,请确保这里的路径与您的证书和密钥的实际位置匹配:
- SSLCertificateFile /etc/apache2/ssl/apache.crt
- SSLCertificateKeyFile /etc/apache2/ssl/apache.key
复制代码 完成这些更改后,检查您的虚拟主机配置文件是否与以下内容匹配。
- <IfModule mod_ssl.c>
- <VirtualHost _default_:443>
- ServerAdmin webmaster@localhost
- ServerName example.com:443
- DocumentRoot /var/www/html
-
- . . .
- SSLEngine on
-
- . . .
-
- SSLCertificateFile /etc/apache2/ssl/apache.crt
- SSLCertificateKeyFile /etc/apache2/ssl/apache.key
复制代码 生存并退出文件。
重新启动 Apache 以应用更改。
- sudo service apache2 reload
复制代码 要相识有关一样平常配置 Apache 虚拟主机的更多信息,请参阅本文。
第五步 — 利用 SSL 测试 Apache
在本节中,我们将从命令行测试 SSL 连接。
你可以从以下位置之一运行此测试:(1) 本地的基于 Unix 的系统,(2) 另一个 Droplet,或者 (3) 相同的 Droplet。如果你从外部系统运行它,你将确认你的站点可以通过公共互联网访问。
通过 HTTPS 443 端口打开连接。
- openssl s_client -connect your_server_ip:443
复制代码 滚动到输出的中间部分(在密钥之后),你应该会找到以下内容:
- —-
- SSL handshake has read 3999 bytes and written 444 bytes
- —-
复制代码 . . .
SSL-Session:
. . .
当然,数字是可变的,但这表现乐成。恭喜你!
按 CTRL+C 退出。
你也可以在网页欣赏器中访问你的站点,利用 URL 中的 HTTPS (https://example.com)。你的欣赏器会警告你证书是自署名的。你应该能够查看证书并确认具体信息与你在第三步中输入的内容匹配。
结论
这结束了我们的教程,让你拥有一个利用 SSL 证书安全配置的工作中的 Apache 服务器。有关利用 OpenSSL 的更多信息,请参阅 OpenSSL Essentials 文章。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |