介绍
本教程将向您介绍如何从受信任的商业证书颁发机构(CA)获取并安装SSL证书。 SSL证书允许Web服务器加密其流量,并且还提供一种机制来验证其访问者的服务器身份。 通过自签名证书从受信任的CA使用购买的SSL证书的主要好处是,您的网站的访问者不会看到有关无法验证您网站的身份的可怕警告。
本教程介绍如何从以下可信证书颁发机构获取SSL证书:
- 去吧爸爸
- RapidSSL(通过Namecheap)
您也可以使用您选择的任何其他CA。
获得SSL证书后,我们将向您介绍如何在Nginx和Apache HTTP Web服务器上安装它。
先决条件
在尝试从商业CA获取SSL证书之前,您应该确保有几个先决条件。 本节将涵盖您将需要什么,才能从大多数CA颁发SSL证书。
钱
必须购买从商业CA发出的SSL证书。 最好的免费替代品从颁发的证书让我们加密 。 Let's Encrypt是一个新的证书颁发机构,颁发在大多数Web浏览器中受信任的免费SSL / TLS证书。
注册域名
在获取SSL证书之前,您必须拥有或控制您希望使用证书的注册域名。 如果您还没有注册域名,您可以向其中一个域名注册商(例如Namecheap,GoDaddy等)注册一个域名。
域验证权限
对于基本域验证过程,您必须拥有域的WHOIS记录上的电子邮件地址之一或域名本身的“管理类型”电子邮件地址。 发出SSL证书的证书颁发机构通常会通过向域的WHOIS记录上的某个地址发送验证电子邮件或域本身的通用管理员电子邮件地址来验证域控制。 某些CA提供备用的域验证方法,例如基于DNS或HTTP的验证,这些不在本指南的范围之内。
如果您希望获得组织验证(OV)或扩展验证(EV)SSL证书,您还需要向CA提供文件以确定网站所有者的法律身份等。
网络服务器
除了前面提到的要点,您将需要一个Web服务器来安装SSL证书。 这是可以在发出SSL证书的域名上访问的服务器。 通常,这将是一个Apache HTTP,Nginx,HAProxy或Varnish服务器。 如果您需要帮助来设置可通过您注册的域名访问的Web服务器,请按照下列步骤操作:
- 设置您选择的Web服务器。 例如, LEMP(Nginx的)或LAMP(Apache)的服务器-一定要配置Web服务器软件,使用自己注册的域名
- 将您的域配置为使用适当的Nameservers。 如果你的Web服务器上托管DigitalOcean,这个指南可以帮助您设置: 怎么点从常见的域名注册商DigitalOcean的域名服务器
- 将您的Web服务器的DNS记录添加到您的Nameservers。 如果您正在使用DigitalOcean的域名服务器,按照本指南来学习如何添加相应的记录: 如何建立一个主机名与DigitalOcean
选择您的证书颁发机构
如果您不确定要使用哪个证书颁发机构,则需要考虑几个重要因素。 在概述层面,最重要的是,您选择的CA提供您想要的价格,你会感到舒适的功能。 本节将更多地关注大多数SSL证书购买者应该注意的功能,而不是价格。
根证书计划成员资格
最关键的一点是,您选择的CA是最常用的操作系统和Web浏览器的根证书程序的成员,即它是一个“受信任的”CA,其根证书受常见浏览器和其他软件。 如果您的网站的SSL证书由受信任的“CA”签名,则其身份被信任CA的软件视为有效 - 这与自签名SSL证书相反,自签名SSL证书还提供加密功能,但伴随身份验证警告是大多数网站访问者的错误。
您将遇到的大多数商业CA将是常见的根CA程序的成员,并且将说它们与99%的浏览器兼容,但是在购买证书之前不会受到损害。 例如,苹果提供了值得信赖的SSL根证书iOS8上的列表在这里 。
证书类型
确保选择提供所需证书类型的CA。 许多CA在各种通常令人困惑的名称和定价结构下提供这些证书类型的变体。 以下是每种类型的简短说明:
- 单域 :用于单个域,例如
example.com
。 注意,其他子域,如www.example.com
,不包括在内 - 通配符 :用于域及其任何子域。 例如,对于一个通配符证书
*.example.com
也可用于www.example.com
和store.example.com
- 多域 :被称为SAN或UC证书,这些可以被添加到该主题备用名称字段多个域和子域使用。 例如,一个单一的多域证书可以与被使用
example.com
,www.example.com
和example.net
除了上述证书类型之外,CA还提供了不同级别的验证。 我们将在这里讨论:
- 域验证 (DV):DV证书的CA后发表验证请求者拥有或控制问题的域
- 组织验证(OV):OV证书可以颁发CA验证请求者的合法身份后,才发
- 扩展验证(EV):EV证书可颁发证书的CA验证后,方可合法身份,除其他事项外,请求者,按照一套严格的指导方针发行。 此类型证书的目的是为您网站的访问者提供贵组织身份的合法性的额外保证。 EV证书可以是单个或多个域,但不能是通配符
本指南将向您介绍如何从GoDaddy和RapidSSL获取单个域或通配符SSL证书,但获取其他类型的证书非常相似。
附加功能
许多CA提供了各种各样的“奖金”功能,以区别于其他SSL证书颁发供应商。 这些功能中的一些可以最终为您节省金钱,因此,在购买之前,请仔细衡量您的需求与产品的重要性。 功能例子看出来的包括免费补发证书或对工作的单个域价位证书www.
和域基本名称,例如www.example.com
用的SAN example.com
生成CSR和私钥
在您完成所有的先决条件整理,并且您知道您想要获得的证书类型后,是时候生成证书签名请求(CSR)和私钥。
如果您在使用Apache HTTP或Nginx的用作Web服务器的规划,使用openssl
生成您的Web服务器上的私钥和CSR。 在本教程中,我们将保留所有相关文件在我们的主目录,但随时可以将它们存储在服务器上的任何安全位置:
cd ~
要生成私钥,叫example.com.key
和企业社会责任,叫example.com.csr
,运行此命令(替换example.com
与您的域的名称):
openssl req -newkey rsa:2048 -nodes -keyout example.com.key -out example.com.csr
此时,系统将提示您输入几行将包含在您的证书请求中的信息。 最重要的部分是公用名称字段,它应该与要与使用的证书名称-例如, example.com
, www.example.com
,或(对于通配符证书请求) *.example.com
。 如果您计划获取OV或EV证书,请确保所有其他字段准确反映您的组织或业务详细信息。
例如:
Country Name (2 letter code) [AU]:US
State or Province Name (full name) [Some-State]:New York
Locality Name (eg, city) []:New York
Organization Name (eg, company) [Internet Widgits Pty Ltd]:My Company
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:example.com
Email Address []:sammy@example.com
这将产生一个.key
和.csr
的文件。 该.key
文件是你的私钥,并应保持安全。 该.csr
的文件是你会送什么给CA以请求您的SSL证书。
向CA提交证书请求时,您需要复制和粘贴CSR。 要打印CSR的内容,请使用此命令(用您自己的文件名替换文件名):
cat example.com.csr
现在我们准备从CA购买证书。 我们将展示两个例子,GoDaddy和RapidSSL通过Namecheap,但随时可以从任何其他供应商获得证书。
实施例CA1:通过Namecheap的RapidSSL
Namecheap提供了一种从各种CA购买SSL证书的方法。 我们将介绍从RapidSSL获取单个域证书的过程,但如果您想要不同类型的证书,则可以偏离。
注意:如果从申请的RapidSSL单个域证书的www
站点(如子域www.example.com
),他们会发出与您的基础域的SAN证书。 例如,如果您的证书请求是www.example.com
,得到的证书,才能既为工作www.example.com
和example.com
。
选择和购买证书
转到Namecheap的SSL证书页面: https://www.namecheap.com/security/ssl-certificates.aspx 。
在这里,您可以开始选择验证级别,证书类型(“域安全”)或CA(“Branded”)。
在我们的例子中,我们将在“域验证”框点击商品比较按钮。 然后,我们会发现“的RapidSSL”,然后单击添加到购物车按钮。
此时,您必须注册或登录到Namecheap。 然后完成付款流程。
请求证书
您所选择的支付证书后,转到管理SSL证书环节,“嗨用户名 ”部分。
在这里,您将看到通过Namecheap购买的所有SSL证书的列表。 点击立即激活链接,您要使用的证书。
现在选择您的Web服务器的软件。 这将确定Namecheap将提供给您的证书的格式。 通常选择的选项是“Apache + MOD SSL”,“nginx”或“Tomcat”。
您的CSR贴入框,然后单击下一步按钮。
您现在应该在“选择审批”的步骤的过程中,将在您的域名的WHOIS记录,或者你得到一个证书的站点的管理员类型的地址发送一个验证请求的电子邮件到一个地址。 选择您要发送验证电子邮件的地址。
提供“行政联系信息”。 点击提交订单按钮。
验证域
此时,电子邮件将发送到“批准人”地址。 打开电子邮件并批准证书请求。
下载证书
批准证书后,该证书将通过电子邮件发送给技术联系人 。 为您的域颁发的证书和CA的中间证书将位于电子邮件的底部。
将它们复制并保存到您生成私钥和CSR的相同位置的服务器中。 名的域名和证书.crt
扩展名,例如example.com.crt
,并命名中间证书intermediate.crt
。
现在,证书已准备好安装在Web服务器上。
示例CA 2:GoDaddy
GoDaddy是一个流行的CA,并具有所有基本的证书类型。 我们将介绍获取单个域证书的过程,但如果您想要不同类型的证书,则可以偏离。
选择和购买证书
转到GoDaddy的SSL证书页面: https://www.godaddy.com/ssl/ssl-certificates.aspx 。
向下滚动,然后点击开始使用按钮。
从下拉菜单中选择所需的SSL证书类型:单域,多域(UCC)或通配符。
然后选择您的计划类型:域,组织或扩展验证。
然后选择术语(有效期)。
然后点击加入购物车按钮。
查看您目前的订单,然后点击前往收银台按钮。
完成注册和付款流程。
请求证书
您完成您的订单后,单击SSL证书 *键(或单击我的帐户 >在右上角管理SSL证书 )。
找到你刚刚购买,然后点击设置按钮的SSL证书。 如果你还没有使用GoDaddy的的SSL证书之前,系统会提示您设立了“SSL证书”的产品,而你最近的证书才能与产品相关联(点击绿色的设置按钮,并刷新浏览器之前,等待几分钟)。
将“SSL证书”产品添加到您的GoDaddy帐户后,您应该会看到您的“新证书”和“启动”按钮。 点击启动按钮旁边的新证书。
通过将其粘贴到框中来提供您的CSR。 默认情况下将使用SHA-2算法。
勾选我同意复选框,然后单击申请证书按钮。
验证域
现在,您必须验证您是否拥有域的控制权,并向GoDaddy提供几个文档。 GoDaddy会向您域的WHOIS记录上的地址发送域所有权验证电子邮件。 按照您发送给您的电子邮件中的说明操作,并授权颁发证书。
下载证书
在向GoDaddy验证您控制域后,请检查您的电子邮件(您向GoDaddy注册的电子邮件)是否显示说明您的SSL证书已发出的消息。 打开它,并按照下载证书链接(或单击GoDaddy的控制面板旁边的SSL证书的启动按钮)。
现在,点击下载按钮。
选择正在从服务器类型下拉菜单中的服务器软件-如果你使用的是Apache HTTP或Nginx的,选择“Apache” -然后点击下载Zip文件按钮。
提取ZIP存档。 它应该包含两个.crt
文件; 您的SSL证书(其中应该有一个随机名称)和GoDaddy的中间证书捆绑( gd_bundle-g2-1.crt
)。 复制两个您的Web服务器。 该证书的域名命名与.crt
扩展名,例如example.com.crt
,并重新命名中间证书捆绑为intermediate.crt
。
现在,证书已准备好安装在Web服务器上。
在Web服务器上安装证书
从您选择的CA获取证书后,必须将其安装在Web服务器上。 这涉及到为您的Web服务器软件配置添加一些SSL相关的行。
我们将在本节中讨论Ubuntu 14.04上的基本Nginx和Apache HTTP配置。
我们将假设以下事项:
- 私有密钥,SSL证书,并在适用,CA的中间证书都位于主目录为
/home/sammy
- 私人密钥被称为
example.com.key
- SSL证书被称为
example.com.crt
- 该CA中间证书(S)是一个名为
intermediate.crt
- 如果您启用了防火墙,请确保其允许端口443(HTTPS)
注:在实际环境中,这些文件应该存储在某个地方,只有在运行Web服务器的主进程(通常是用户root
)都可以访问。 私钥应该保持安全。
Nginx
如果你想在Ubuntu 14.04上使用你的证书与Nginx,请按照这一节。
对于Nginx,如果您的CA包括中间证书,您必须创建一个包含您的证书和CA的中间证书的单个“链接”证书文件。
更改到包含您的私有密钥,证书和CA中间证书(在目录intermediate.crt
文件)。 我们将假设他们在您的主目录中的示例:
cd ~
假设你的证书文件名为example.com.crt
,使用此命令创建一个名为联合文件example.com.chained.crt
(替换为您自己的域名高亮显示的部分):
cat example.com.crt intermediate.crt > example.com.chained.crt
现在去你的Nginx服务器块配置目录。 假设位于/etc/nginx/sites-enabled
,使用此命令来改变它:
cd /etc/nginx/sites-enabled
假设要SSL添加到您的default
服务器块文件,打开该文件进行编辑:
sudo vi default
查找并修改listen
指令,所以它看起来像这样修改:
listen 443 ssl;
然后找到server_name
指令,并确保它的价值证书的通用名称相匹配。 此外,添加了ssl_certificate
和ssl_certificate_key
指令,以指定您的证书和私钥文件的路径(与您的文件的实际路径替换突出部分):
server_name example.com;
ssl_certificate /home/sammy/example.com.chained.crt;
ssl_certificate_key /home/sammy/example.com.key;
要仅允许最安全的SSL协议和密码,请在文件中添加以下行:
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
如果您希望HTTP流量重定向到HTTPS,则可以在文件顶部添加此附加服务器块(将突出显示的部分替换为您自己的信息):
server {
listen 80;
server_name example.com;
rewrite ^/(.*) https://example.com/$1 permanent;
}
然后保存并退出。
现在重新启动Nginx加载新配置并通过HTTPS启用TLS / SSL!
sudo service nginx restart
由通过HTTPS,比如访问您的站点测试它https://example.com
。
Apache
如果要在Ubuntu 14.04上使用您的证书与Apache,请按照本节。
通过复制配置文件备份。 假设你的服务器是默认的虚拟主机配置文件上运行, /etc/apache2/sites-available/000-default.conf
,使用这些命令来使一个副本:
cd /etc/apache2/sites-available
cp 000-default.conf 000-default.conf.orig
然后打开文件进行编辑:
sudo vi 000-default.conf
找到<VirtualHost *:80>
项,并修改它,以便您的Web服务器将监听端口443
:
<VirtualHost *:443>
然后添加ServerName
指令,如果它不存在(此替换您的域名):
ServerName example.com
然后添加以下行以指定您的证书和密钥路径(在此替换您的实际路径):
SSLEngine on
SSLCertificateFile /home/sammy/example.com.crt
SSLCertificateKeyFile /home/sammy/example.com.key
如果您使用的是Apache 2.4.8或更高版本 ,加入这一行(替代路径)指定CA中间包:
SSLCACertificateFile /home/sammy/intermediate.crt
如果您使用的是较旧版本的Apache,请使用此行指定CA中间包(替换路径):
SSLCertificateChainFile /home/sammy/intermediate.crt
此时,您的服务器配置为仅在HTTPS(端口443)上侦听,因此不会提供对HTTP(端口80)的请求。 要将HTTP请求重定向到HTTPS,请将以下内容添加到文件顶部(替换这两个地方的名称):
<VirtualHost *:80>
ServerName example.com
Redirect permanent / https://example.com/
</VirtualHost>
保存并退出。
通过运行以下命令启用Apache SSL模块:
sudo a2enmod ssl
现在重新启动Apache以加载新配置并通过HTTPS启用TLS / SSL!
sudo service apache2 restart
由通过HTTPS,比如访问您的站点测试它https://example.com
。 你也想尝试通过HTTP,如连接http://example.com
以确保重定向工作正常!
结论
现在,您应该了解如何添加受信任的SSL证书以保护您的Web服务器。 一定要买一个你很高兴的CA!