获得具有商业签名的TLS证书

如果您打算托管一个可公开访问的使用HTTPS的网站,那么您将需要安装一个具有商业签名的TLS证书,这样访问您网站的人就不会在浏览器中收到有关不安全连接的警告。

最简单的方法是通过Let's Encrypt来进行证书签名。虽然CertBot工具可以通过Let's Ebcrypt实现非常简单的获取和更新证书,但是此方案并不是适合所有用户的。

如果您需要域验证证书扩展验证证书,则必须创建提交给如Thawte或Verisign这样的证书颁发机构(CA)的证书签名请求(CSR)。这也是本指南所关注的获取具有签名的TLS证书的方法。

某些CA允许您在其上注册帐户后通过其Web界面直接创建CSR。正如本指南所提及的,这无疑会比在手动地在服务器或本地主机上创建CSR更加便利。

在决定所申请的公司之前请彻底研究相关证书颁发机构,这些公司将通过HTTPS保护客户的个人信息、加密签名电子邮件或授予对内部平台的访问权限。

如果您打算在网站上使用您的SSL证书,请在实现本指南中的过程后,参考我们另一篇文章指南在NGINX上启用针对HTTPS连接的TLS

创建证书签名请求(CSR)

  1. 切换到root用户权限并定位到要在其中创建证书信息的目录: su - root mkdir /root/certs/ && cd /root/certs/
  2. 创建服务器密钥和CSR: openssl req -new -newkey rsa:4096 -days 365 -nodes -keyout example.com.key -out example.com.csr 系统将提示让您将您的网站或组织的标识信息添加到证书中,因为将会依据此信息来创建证书并传递给证书颁发机构进行注册签名,所以信息需要是精准的。 以下是此命令中使用的OpenSSL选项的细化说明。尽管还提供很多可选项,但这里的目标就是创建一个可以良好使用一年的证书。有关更多信息,请参阅终端中man openssl的提醒。
  • -newkey rsa:4096:创建一个用于证书使用的4096位RSA密钥。虽然是最新版本OpenSSL默认设置密钥为RSA 2048,但为了确保密钥大小,您应该在创建时候指定它。
  • -sha256:使用265位SHA(安全散列算法)生成证书请求。
  • -days:确定证书的允许验证时间长度(以天为单位)。对于商业证书,此值不应高于730(2年)。
  • -nodes:创建不需要密码的证书。如果不启用此选项,则每次重新启动应用程序时,都需要在控制台中输入密码。

这是输出的一个样例。你可以安全地将extra attributes额外配置选项留空,只需按Enter键跳过选项:

root@localhost:~# openssl req -new -newkey rsa:4096 -days 365 -nodes -keyout example.com.key -out example.com.csr
Generating a 4096 bit RSA private key
..+++
......................................+++
向`example.com.key`写入新的密钥
-----
您需要输入需要被合并加入相关证书请求的信息。
您需要输入的信息被称为识别名或者简称为DN。
您可以留空许多字段,很多字段都会有默认配置
如果您输入'.', 则相关字段将会留空
-----
Country Name (2 letter code) [AU]:US
State or Province Name (full name) [Some-State]:PA
Locality Name (eg, city) []:Philadelphia
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Linode
Organizational Unit Name (eg, section) []:Docs
Common Name (e.g. server FQDN or YOUR name) []:hostname.example.com
Email Address []:admin@example.com

请记得输入下列将会发送到证书请求中的额外参数
A challenge password []:
An optional company name []:l

您的证书颁发机构的根证书

大多数现代Linux发行版都附带了安装为ca-certificates软件包一部分的通用根CA证书,其位于/etc/ssl/certs/ca-certificates.crt文件中。

或者说,如果您的ca-certificates依赖中未包含CA的根证书,请直接从证书颁发机构的网站下载证书。获得证书后,将文件移动到源目录并更新依赖包来手动添加证书。

CentOS

cp rootCert-example.crt /etc/pki/ca-trust/source/anchors/
update-ca-trust

Debian或Ubuntu

cp rootCert-example.crt /usr/local/share/ca-certificates/
update-ca-certificates

将您的CSR提交给您的证书颁发机构

将证书签名请求提交给CA。不同CA的步骤可能会不同,有些CA有视频或书面说明来指导您完成整个过程。它通常包括以下步骤:

  1. 登录您的CA帐户。
  2. 通过Web管理控制台上传您的CSR。
  3. 几天后,您可以下载已签名的证书并安装到您的服务器中。

准备链式SSL证书

许多CA将给中间机构颁发证书,而获得该类证书必须与根证书组合在一起。

如果您从CA收到多个以.crt结尾的文件(统称为链式SSL证书),则必须按特定顺序将它们链接到一个文件中,以确保与大多数浏览器完全兼容。以下示例使用由Comodo签名的链式SSL证书。

合并各个证书:

cat example.com.crt COMODORSADomainValidationSecureServerCA.crt COMODORSAAddTrustCA.crt AddTrustExternalCARoot.crt > www.mydomain.com.crt

此表可以更好更直观地了解组成链式证书地的相关命令:

证书类别:

中间机构:

颁发机构:

最终用户证书

example.com

Comodo LLC

中间证书1

Comodo LLC

COMODORSA DomainValidation SecureServerCA

中级证书2

COMODORSA DomainValidation SecureServerCA

COMODORSA AddTrustCA

根证书

COMODORSA AddTrustCA

AddTrust ExternalCARoot

生成的文件内容将类似于以下内容:

本文的版权归 PantaZheng 所有,如需转载请联系作者。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏张善友的专栏

Jexus服务器SSL二级证书安装指南

申请获得服务器证书有三张,一张服务器证书,二张中级CA证书。在Android微信中访问Https,如果服务器只有一张CA证书,就无法访问。 获取服务器证书中级...

2388
来自专栏Java技术栈

干货 | 图解 https 单向认证和双向认证!

HyperText Transfer Protocol,超文本传输协议,是互联网上使用最广泛的一种协议,所有WWW文件必须遵循的标准。HTTP协议传输的数据都是...

3142
来自专栏刺客博客

免费泛解析证书获取及后续安装方法

4705
来自专栏Flutter&Dart

DartVM服务器开发(第二十天)--jaguar配置HTTPS

我们可以在项目里面的bin文件夹下面创建一个文件夹叫做ssl 分别将上面生成的秘钥跟证书放到这个文件夹下面

921
来自专栏FreeBuf

什么是SSL预证书?

预验证是用作证书透明度(CT)一部分的特殊类型的SSL证书。 预先证书与常规SSL证书不同,因为它们不是(也不可以)用于验证服务器或形成经过身份验证的连接(例如...

3164
来自专栏java一日一条

如何针对老旧浏览器设置 HTTPS 策略

几天前,一位朋友问我:都说推荐用 Qualys SSL Labs 这个工具测试 SSL 安全性,为什么有些安全实力很强的大厂家评分也很低?我认为这个问题应该从两...

2582
来自专栏云计算教程系列

如何创建自签名证书

TLS/SSL是用于将正常流量包装在受保护的加密包装中的Web协议。得益于此技术,服务器可以在服务器和客户端之间安全地发送流量,而不会被外部各方拦截。证书系统还...

1794
来自专栏進无尽的文章

精析-苹果开发者证书的实现机制

      在iOS开发过程中,不可避免的要和证书打交道,真机调试、App上架、打包给测试去测试等都需要搞证书。在此过程中我们会遇到很多的问题,但是如果掌握了真...

1522
来自专栏派森公园

SSH的工作原理

2374
来自专栏腾讯Bugly的专栏

iOS 中 HTTPS 证书验证浅析

导语 在 WWDC 16 中,Apple 表示, 从 2017年1月1日起(最新消息, 实施时间已延期),所有新提交的 App 使用系统组件进行的 HTTP 网...

5628

扫码关注云+社区