如果你要提高你的网站的安全性,那么你自然要让你的网站走的是https协议,那么你必然是要上传SSL证书到你网站上,所以作为小白的你,如何部署SSL证书呢?
一,申请阿里云SSL证书
证书可以在官网申请免费的或者付费版本的
https://www.aliyun.com/product/cas
点击购买,并付款
二,获取证书
1,登录数字证书管理服务控制台
2,在左侧导航栏,选择证书管理>SSL证书管理
3,在正式证书页签,单击目标证书操作列的证书申请,或将鼠标悬停在目标证书状态列的
4,在证书申请面板中,完成以下配置并单击提交审核
DV证书申请信息
OV证书申请信息
EV证书申请信息
三,验证域名所有权
在证书颁发机构(CA)为您的网站颁发证书之前,需要验证证书绑定域名的所有权或管理权限。在证书申请信息提交审核后,请您根据实际情况通过选择域名系统(DNS)、文件或电子邮件证明您对域名的所有权。
下表为您介绍不同类型证书的域名验证方式以及操作指导。
下表为您介绍不同类型证书的域名验证方式以及操作指导。
| 证书类型 | 场景 | 域名验证方式 | 审核签发时长 |
| DV证书 | DNS域名解析服务与证书申请者属于同一阿里云账号 |
自动DNS验证:阿里云会自动识别符合条件的域名,并在云解析DNS控制台对应的域名中添加一条解析记录,用于验证域名所有权,您仅需等待证书签发即可。更多信息,请参见DNS域名解析服务与证书申请者属于同一阿里云账号。 | 信息填写正确的情况下,证书平均签发时长为1~15分钟。 |
| DNS域名解析服务与证书申请者不属于同一阿里云账号 | 手动DNS验证:您需要手动在对应的DNS域名解析服务商,添加一条解析记录用于域名所有权验证。具体操作,请参见手动DNS验证流程。文件验证:您需要手动从数字证书管理服务控制台下载一个专用的验证文件,然后将该文件上传到站点服务器的指定验证目录。具体操作,请参见文件验证流程。 | ||
| OV或EV证书 | 不区分 | 本地邮件验证:提交OV或EV证书申请后,CA中心一般会在1个工作日内(具体时间以CA中心所在地的时间为准,如遇节假日该时间会顺延)向您提交证书申请时填写的邮箱中发送证书初审邮件,请根据邮件提供的审核方式,并配合CA中心完成验证。 | 在信息填写正确且积极配合CA中心验证的情况下,平均签发时长为5个自然日。 |
DNS域名解析服务与证书申请者属于同一阿里云账号
如果DNS域名解析服务与证书申请者属于同一阿里云账号,申请DV证书时,阿里云会自动识别该域名,并默认选择自动DNS验证方式,且不支持修改,若需要更改验证方式请切换至其他阿里云账号进行证书购买申请。提交审核后,阿里云会自动在云解析DNS控制台对应的域名中添加一条解析记录,用于验证域名所有权
DNS域名解析服务与证书申请者不属于同一阿里云账号
申请DV证书时,如果DNS域名解析服务与证书申请者不属于同一阿里云账号,您可以选择以下方式进行域名所有权验证。
手动DNS验证流程
DV证书绑定的域名需为单域名或通配符域名,且您有权限修改域名的DNS解析设置(即拥有域名管理权限)时,您可以选择手动DNS验证,即您需要在对应的DNS域名解析服务商,手动添加一条CNAME或TXT类型的解析记录用于验证域名所有权。
- CNAME记录:在DNS中为域名添加一条别名,该别名由阿里云生成。选择CNAME记录,后续为该域名申请同品牌同类型的SSL证书时,将不再重复进行域名所有权验证,可有效避免因为域名所有权验证不及时而导致证书签发不成功或签发时间过长。目前仅DigiCert、GeoTrust、Rapid、Wosign和CFCA品牌的SSL证书支持通过CNAME记录验证域名所有权。
- TXT记录: 在DNS中为域名添加一条用于验证域名所有权的文本信息,该文本由阿里云生成。选择TXT记录,在每次申请证书时都需要在DNS中添加记录进行域名所权验证。
下文以添加TXT解析记录为例,向您介绍域名验证流程:
步骤一:获取验证信息
提交证书申请审核后,您需要在证书申请面板的验证信息引导页,获取验证授权验证类型、主机记录与记录值。
步骤二:添加DNS解析记录
- 使用域名持有者所在的阿里云账号,登录云解析DNS控制台。
- 在权威域名页签找到证书绑定的域名,单击操作列解析设置按钮。
- 在解析设置页面,单击添加记录。
- 在添加记录面板,添加步骤一获取到的验证信息(记录类型、主机记录及记录值),然后单击确定。
TXT记录类型的添加示意图如下:数字证书管理服务控制台(左图)、云解析DNS控制台(右图)。
添加完成后,您可以在记录列表中查看已添加的记录。
- 新增的解析记录实时生效。
- 删除或修改解析记录取决于本地DNS缓存的解析记录的TTL到期时间,一般默认为10分钟。
- 修改DNS服务器解析默认生效时间为48小时。例如您将域名DNS解析服务迁移至阿里云DNS解析,在配置解析记录后,会在48小时后生效。
步骤三:验证域名
成功配置解析记录后,返回数字证书管理服务控制台证书申请时的验证信息引导页,单击验证。
文件验证流程
DV证书绑定的域名为单域名(http://aliyundoc.com)时,支持文件验证方式。您在提交证书申请审核后,需要下载验证文件,然后将解压后的文件上传到站点服务器的指定验证目录(.well-known/pki-validation/)。CA中心将会依次尝试访问HTTPS地址和HTTP地址(443端口和80端口),验证是否可以访问到验证文件内容,验证通过后,将为您签发证书。
文件验证示例流程:
步骤一:下载验证文件
提交证书申请审核后,在下载验证文件区域,单击验证文件,下载专有验证文件压缩包到本地计算机并解压缩。下载的文件是一个ZIP压缩包,将其解压缩后可以获得fileauth.txt专有验证文件。该文件仅在下载后的3天内有效,如果您逾期未完成文件验证,则需要重新下载专有验证文件
步骤二:上传验证文件
下面以安装在阿里云云服务器ECS上的Nginx(Linux版本)为例,为您介绍如何进行文件验证配置。
- 连接云服务器ECS。具体操作,请参见ECS远程连接方式概述。
- 依次执行以下命令,在服务器的Web根目录(Nginx服务默认为/var/www/html/)下创建文件验证目录(.well-known/pki-validation/)。
cd /var/www/html mkdir -p .well-known/pki-validation
将验证文件fileauth.txt上传到验证目录(/var/www/html/.well-known/pki-validation/)。
您可以使用远程登录工具附带的本地文件上传功能,上传文件。例如PuTTY、Xshell或WinSCP等。如果您使用的是阿里云云服务器 ECS,上传文件具体操作,请参见使用远程桌面或Windows APP向Windows实例传输文件或上传文件到Linux云服务器
步骤三:验证域名
成功上传fileauth.txt验证文件后,返回数字证书管理服务控制台证书申请面板。
- 访问URL地址(HTTPS地址和HTTP地址),确保能够访问到验证文件内容
- 单击验证按钮。
四,下载SSL证书
- 登录数字证书管理服务控制台。
- 在左侧导航栏,选择证书管理 > SSL证书管理。
- 在正式证书或个人测试证书(原免费证书)页签,选中需要下载的证书,在证书列表左下方单击下载。
4.在弹出的对话框,根据您的服务器类型下载证书包并解压。
如果列表中没有适合您服务器的证书格式,您可以先下载PEM格式的证书,再通过证书格式转换工具转换证书格式。转换证书格式的具体操作
五,部署SSL证书
①,在NGINX中部署
1,执行以下命令,在Nginx的conf目录下创建一个用于存放证书的目录。
cd /usr/local/nginx/conf #进入Nginx默认配置文件目录。该目录为手动编译安装Nginx时的默认目录,如果您修改过默认安装目录或使用其他方式安装,请根据实际配置调整。 mkdir cert #创建证书目录,命名为cert。
2,将证书文件和私钥文件上传到Nginx服务器的证书目录(/usr/local/nginx/conf/cert)。
3,编辑Nginx配置文件nginx.conf,修改与证书相关的配置。
执行以下命令,打开配置文件
vim /usr/local/nginx/conf/nginx.conf
在nginx.conf中定位到HTTPS server属性配置
删除行首注释符号#,并参考如下示例进行修改
server { #HTTPS的默认访问端口443。 #如果未在此处配置HTTPS的默认访问端口,可能会造成Nginx无法启动。 listen 443 ssl; #填写证书绑定的域名。多域名配置示例:server_name example.com www.example.com doc.example.com; server_name <YOURDOMAIN>; #填写证书文件绝对路径 ssl_certificate cert/<cert-file-name>.pem; #填写证书私钥文件绝对路径 ssl_certificate_key cert/<cert-file-name>.key; ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m; #自定义设置使用的TLS协议的类型以及加密套件(以下为配置示例,请您自行评估是否需要配置) #TLS协议版本越高,HTTPS通信的安全性越高,但是相较于低版本TLS协议,高版本TLS协议对浏览器的兼容性较差。 ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3; #表示优先使用服务端加密套件。默认开启 ssl_prefer_server_ciphers on; location / { root html; index index.html index.htm; } }
可选:设置HTTP请求自动跳转到HTTPS
如果您希望所有的HTTP访问自动跳转到HTTPS页面,可通过rewrite指令重定向到HTTPS。
server { listen 80; #填写证书绑定的域名 server_name <YOURDOMAIN>; #将所有HTTP请求通过rewrite指令重定向到HTTPS。 rewrite ^(.*)$ https://$host$1; location / { index index.html index.htm; } }
配置效果如下图所示:
执行以下命令,重启Nginx服务
#进入Nginx服务的可执行目录。 cd /usr/local/nginx/sbin #重新载入配置文件。 ./nginx -s reload
验证SSL证书是否配置成功
证书安装完成后,您可通过访问证书绑定的域名验证该证书是否安装成功。
https://yourdomain #需要将yourdomain替换成证书绑定的域名。
如果网页地址栏出现小锁标志,表示证书已经安装成功。
②,宝塔面板安装SSL证书
- 登录宝塔面板后,在左侧导航栏,单击网站。
- 选择您的项目,并在SSL证书列,单击未部署
3,在本地使用文本编辑器打开证书文件(.pem)和私钥文件(.key),然后复制其内容并将其粘贴至相应位置,单击保存并启用证书
配置完成后显示如下:
③,在Apache服务器安装SSL证书
执行以下命令,在Apache服务器的安装目录下创建一个用于存放证书文件的目录
# cert目录仅为示例,证书存放目录没有命名限制。 sudo mkdir /etc/httpd/cert
将证书文件和私钥文件上传至您创建的用于存放证书文件的目录下。
为确保Apache服务器能够正常启用SSL模块,请按以下步骤修改对应的配置文件
找到/etc/httpd/conf.modules.d/00-ssl.conf文件,修改LoadModule ssl_module modules/mod_ssl.so配置项,若前面有#号,需移除以取消注释,修改后保存文件。
找到/etc/httpd/conf/httpd.conf文件,修改Include conf.modules.d/*.conf配置项,若前面有#号,需移除以取消注释,修改后保存文件
需要注意的是,上述配置项所在文件的具体位置可能会因系统版本或安装方式而有所不同。为了找到这些配置的确切位置,您可以使用grep命令来在Linux系统上查找包含特定文本的所有文件
#查找包含LoadModule ssl_module的所有文件。 sudo grep -r "LoadModule ssl_module" /etc/httpd/
#查找包含Include conf.modules.d的所有文件。 sudo grep -r "Include conf.modules.d" /etc/httpd/
修改与证书相关的配置。
执行以下命令,打开ssl.conf
sudo vim /etc/httpd/conf.d/ssl.conf
在ssl.conf配置文件中,定位到以下参数,按照中文注释修改
安装单域名或多域名证书配置文件
<VirtualHost *:443> ServerName example.com # 修改为申请证书时绑定的域名。 SSLCertificateFile cert/domain_name_public.crt # 将domain_name_public.crt替换成您证书文件名。 SSLCertificateKeyFile cert/domain_name.key # 将domain_name.key替换成您证书的密钥文件名。 SSLCertificateChainFile cert/domain_name_chain.crt # 将domain_name_chain.crt替换成您证书的证书链文件名。 #自定义设置使用的TLS协议的类型以及加密套件(以下为配置示例,请您自行评估是否需要配置) #TLS协议版本越高,HTTPS通信的安全性越高,但是相较于低版本TLS协议,高版本TLS协议对浏览器的兼容性较差。 #SSLProtocol all -SSLv2 -SSLv3 # 添加SSL协议支持协议,去掉不安全的协议。 #SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM # 修改加密套件。 </VirtualHost> #如果证书包含多个域名,复制VirtualHost参数,并将ServerName修改为第二个域名。 <VirtualHost *:443> ServerName example2.com#修改为申请证书时绑定的第二个域名。 SSLCertificateFile cert/domain_name2_public.crt # 将domain_name2替换成您申请证书时的第二个域名。 SSLCertificateKeyFile cert/domain_name2.key # 将domain_name2替换成您申请证书时的第二个域名。 SSLCertificateChainFile cert/domain_name2_chain.crt # 将domain_name2替换成您申请证书时的第二个域名。 SSLEngine on SSLHonorCipherOrder on #自定义设置使用的TLS协议的类型以及加密套件(以下为配置示例,请您自行评估是否需要配置) #TLS协议版本越高,HTTPS通信的安全性越高,但是相较于低版本TLS协议,高版本TLS协议对浏览器的兼容性较差。 #SSLProtocol all -SSLv2 -SSLv3 # 添加SSL协议支持协议,去掉不安全的协议。 #SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM # 修改加密套件。 </VirtualHost>
安装通配符域名证书配置文件
<VirtualHost _default_:443> #自定义设置使用的TLS协议的类型以及加密套件(以下为配置示例,请您自行评估是否需要修改) #TLS协议版本越高,HTTPS通信的安全性越高,但是相较于低版本TLS协议,高版本TLS协议对浏览器的兼容性较差 SSLProtocol all -SSLv2 -SSLv3 SSLCipherSuite HIGH:3DES:!aNULL:!MD5:!SEED:!IDEA #将domain_name_public.crt替换成您证书文件名。 SSLCertificateFile /etc/httpd/cert/domain_name_public.crt #将domain_name.key替换成您证书的私钥文件名。 SSLCertificateKeyFile /etc/httpd/cert/domain_name.key #将domain_name_chain.crt替换成您证书的证书链文件名。 SSLCertificateChainFile /etc/httpd/cert/domain_name_chain.crt </VirtualHost>
可选:请根据您的业务需要,在/etc/httpd/conf/httpd.conf文件中添加以下重定向代码,设置HTTP请求自动跳转到HTTPS
RewriteEngine on RewriteCond %{SERVER_PORT} !^443$ RewriteRule ^(.*)$ https://%{SERVER_NAME}$1 [L,R]
执行以下命令,重启Apache服务器,使修改后配置文件生效,确保SSL模块被正常启用。
sudo systemctl restart httpd
④,在Tomcat服务器安装证书
1,将解压后的证书文件和密码文件上传到Tomcat服务器的conf目录。
2,进入Tomcat安装根目录,执行以下命令,打开server.xml文件。
sudo vim ./conf/server.xml
3,按照以下示例以及注释说明配置server.xml
Tomcat 7和8.5及以上版本在安装SSL证书时步骤相似,但因支持的Java版本及配置文件格式有异,故具体配置稍有不同。下面将针对这两个版本介绍如何配置SSL证书,请根据您的Tomcat版本选择合适的配置方法。
- Tomcat7:Tomcat服务器自动选择SSL的实现方式。如果按照该方式无法完成后续配置,可能是因为您的环境不支持自动选定的SSL实现方式。
- 配置项:
配置示例:
PFX格式Tomcat7配置示例
<!-- #port属性根据实际情况修改(HTTPS默认端口为443)。如果使用其他端口号,则您需要使用https://domain_name:port的方式来访问您的网站。 keystoreFile值需替换为证书的实际路径。 keystorePass值需替换为证书密码文件pfx-password.txt中的内容。 如需了解其他配置项,请前往Tomcat官网查看。--> <Connector port="443" protocol="HTTP/1.1" SSLEnabled="true" scheme="https" secure="true" keystoreFile="conf/domain_name.pfx" keystoreType="PKCS12" keystorePass="证书密码" clientAuth="false" SSLProtocol="TLSv1.1+TLSv1.2+TLSv1.3" ciphers="TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA256"/>
JKS格式Tomcat7配置示例
<!-- #port属性根据实际情况修改(HTTPS默认端口为443)。如果使用其他端口号,则您需要使用https://domain_name:port的方式来访问您的网站。 keystoreFile值需替换为证书的实际路径。 keystorePass值需替换为证书密码文件jks-password.txt中的内容。 如需了解其他配置项,请前往Tomcat官网查看。--> <Connector port="443" protocol="HTTP/1.1" connectionTimeout="20000" redirectport="8443" maxParameterCount="1000" SSLEnabled="true" scheme="https" secure="true" keystoreFile="conf/domain_name.jks" keystoreType="JKS" keystorePass="证书密码" clientAuth="false" SSLProtocol="TLSv1.1+TLSv1.2+TLSv1.3" ciphers="TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA256"/>
Tomcat8.5及以上:手动指定SSL的实现方式(指定使用JSSE实现方式)
配置项:
配置示例(需去掉<!- - 和 - ->注释符):
PFX格式Tomcat8.5配置示例
<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true" maxParameterCount="1000"> <SSLHostConfig> <!-- conf/domain_name.pfx请您替换为证书的实际路径,证书密码替换为证书密码文件pfx-password.txt中的内容 --> <Certificate certificateKeystoreFile="conf/domain_name.pfx" certificateKeystorePassword="证书密码" type="RSA"/> </SSLHostConfig> </Connector>
JKS格式Tomcat8.5配置示例
<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true" maxParameterCount="1000"> <SSLHostConfig> <!-- conf/domain_name.jks请您替换为证书的实际路径,证书密码替换为证书密码文件jks-password.txt中的内容 --> <Certificate certificateKeystoreFile="conf/domain_name.jks" certificateKeystorePassword="证书密码" type="RSA"/> </SSLHostConfig> </Connector>
可选:在/conf/web.xml文件,配置HTTP请求自动跳转HTTPS
进入Tomcat安装根目录,执行以下命令,打开web.xml文件
sudo vim ./conf/web.xml
在web.xml文件最底部添加以下配置项
<security-constraint> <web-resource-collection> <web-resource-name>SSL</web-resource-name> <url-pattern>/*</url-pattern> </web-resource-collection> <user-data-constraint> <transport-guarantee>CONFIDENTIAL</transport-guarantee> </user-data-constraint> </security-constraint>
进入Tomcat的bin目录,执行以下命令,停止并重启Tomcat
停止命令 sudo ./shutdown.sh 重启命令 sudo ./startup.sh