博客正式启动HTTPS服务

博客从今天开始正式迁移至HTTPS服务,虽然国内各种阻挠SSH登录,但还是配置好了。

COMODO Positive SSL+Apache Httpd2.4+Wordpress配置,抽空详细写一下这个过程,在G面前你不得不用各种奇怪的办法曲线救国,实属无奈~

环境:Ubuntu+Apache httpd+Wordpress

写一下具体的步骤:

1、选择SSL证书类型

namecheap上列出了四家证书注册商。以Comodo为例,它提供多达14个类型的证书,证书的差别在是否为单证书认证单域名、单证书认证多级域名,单证书认证多二级域名,多域名认证以及担保金额差异、服务支持差异、是否显示Trust Logo、128bit或者256bit加密区别等等。对于个人博客网站可能只需要单二级域名或者单三级域名的SSL认证,所以使用PositiveSSL、PositiveSSL Wildcard是最佳选择,如果是企业支付、电子商务服务就需要更高级别的SSL证书,nitrohsu.com使用的是PositiveSSL,价格上也是Comodo中最便宜的每年10刀。

2、生成CSR(Certificate Signing Request)

使用OpenSSL生成,键入:

openssl req -new -newkey rsa:2048 -nodes -keyout server.key -out server.csr

需要输入请求的相关认证信息,

Country Name (2 letter code) [CN]---国家代码State or Province Name (full name) [Some-State]---省、自治区名称Locality Name (eg, city) []---城市名称Organization Name (eg, company) [Internet Widgits Pty Ltd]---公司名称Organizational Unit Name (eg, section) []---组织名称Common Name (e.g. server FQDN or YOUR name) []---完整域名Email Address []---联系邮箱

A challenge password []---密钥挑战码An optional company name []---可选公司名称

以上的内容如果不存在可以以“NA”代替,一定注意Common Name填写要认证的对应域名,PositiveSSL要填写具体域名“www.nitrohsu.com”,PositiveSSL Wildcard要填写泛域名“*.nitrohsu.com”。

一旦填写完成,会在目录下生成一个“server.key”、“server.csr”,"server/key"用于服务器和客户端会话时解密数据,“server.csr”用于后续的激活认证。

3、Activate SSL

  • 登录Comodo网站,进入Product List,选择SSL Certificates,点击要激活的域名右侧“Activate”;
  • 将第二步中生成的CSR文件中的内容拷贝到CSR Code的位置,下面Primary Domain自动转义出要激活的域名,如果没有转义说明生成的CSR有问题,确认上一步中的Common Name没问题;
  • 点击“submit”,选择DCV(Domain Control Validation)方式,根据自己HTTP Server的便利性选择(注:GeoTrust、Symantec、Thawte OV and EV的SSL不需要此步骤)

1)Email-填写对应认证域名的域邮箱,接收邮件激活;

2)HTTP-将认证文件上传至服务器域指向的根路径;

3)DNS-创建一个新的CNAME认证。

  • 填写相关联系方式、品牌信息,确认填写的信息,点击“submit”会生成一个Certificate ID;
  • 如果需要修改验证方式或者下载相关验证文件,可以点击“Edit Methods”。

4、下载Bundle、CRT文件

  • DCV认证通过后登录Comodo网站,进入Product List,选择SSL Certificates,点击“See Details”;
  • 选择“Download Certificate”,下载的zip包中包含三个文件:

yourdomain_com.ca-bundle

yourdomain_com.crt

yourdomain_com.p7b

5、Apache httpd证书配置

  • 确保Apache httpd开启了mod_ssl模块:sudo a2enmod ssl
  • /etc/apache2/site-avaliable/下复制default.conf为yourdomain-ssl.conf

ServerAdmin youremail@xxx.com
     ServerName www.yourdomain.com
     DocumentRoot /usr/domain.com
           <Directory /usr/domain.com>
               Options Indexes FollowSymLinks
               AllowOverride All
               Require all granted
           </Directory>

  • 添加以下:

#开启重定向,便于后续http 301操作
   RewriteEngine On
   #开启SSL
   SSLEngine on
   
   #从comodo网站上下载的CRT
   SSLCertificateFile  /etc/ssl/www_domain_com.crt
   #第二步中生成的server key
   SSLCertificateKeyFile /etc/ssl/private/www_domain_com.key
   #从comodo网站上下载的bundle.crt
   SSLCACertificateFile /etc/ssl/www_domain_com_bundle.crt

键入“a2ensite yourdomain-ssl”,开启HTTPS服务。

6、Rewrite 301

通过以上设置仅仅是将HTTPS服务开启,但是HTTP服务默认还是正常运行,不会跳转到HTTPS服务上面,如果需要301指向HTTPS服务还需要额外的配置。

网站根目录下的.htaccess文件添加以下:

# HTTPS 匹配二级和三级域名,自动301重定向到HTTPS服务
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*) https://www.your-domain.com%{REQUEST_URI} [R=301,L]
#RewriteCond %{HTTP_HOST} ^your-domain.com [NC,OR]
#RewriteCond %{HTTP_HOST} ^www.your-domain.com [NC]
#RewriteRule ^(.*)$ https://www.your-domain.com%{REQUEST_URI} [R=301,L,NC]

7、reload server,访问 https://your-domain.com 应该就可以了。