ubuntu 开启强制跳转https

最近心血来潮,给自己的服务器配置了https以及强制跳转,现在将自己的过程记录下来,备忘用的。

首先最重要的是得到https相关的证书,有的人会用自签名的证书,但是会被chrome识别为不信任网站,所幸我在v2ex中发现一个开源的签名let’s encrypt,而且貌似很多小公司也在用它,所以我准备拿来试试,随手github一下,找到了这个一键配置脚本 ,非常方便,以下是配置方法,以我的域名cethik.vip为例

获取证书

首先把脚本下载下来:

1
2
wget https://raw.githubusercontent.com/xdtianyu/scripts/master/lets-encrypt/letsencrypt.conf
wget https://raw.githubusercontent.com/xdtianyu/scripts/master/lets-encrypt/letsencrypt.sh

然后给letsencrypt.sh执行权限

1
chmod +x letsencrypt.sh

接下来配置letsencrypt.conf文件,注意 , 把其中的DOMAIN_KEY , DOMAIN_DIR , DOMAINS替换成自己的 , 以下是我的:

1
2
3
4
5
6
ACCOUNT_KEY="letsencrypt-account.key"
DOMAIN_KEY="cethik.vip.key"
DOMAIN_DIR="/var/www/blog"
DOMAINS="DNS:cethik.vip"
#ECC=TRUE
#LIGHTTPD=TRUE

注意DOMAINS中,如果你在域名解析服务商配置二级域名, 而且在你的apache2的配置文件中,存在二级域名指向的网站,那么最好在加上DNS:whatever.cethik.vip , 我这里只需要把我的blog变成https就行了,所以就没写。

接下来跑.sh文件

1
./letsencrypt.sh letsencrypt.conf

注意这里如果出错,意味着你的DOMAINS中有的网站是无效的,也就是脚本扫不到你这个网站。

OK,接下来就是设置apache2了。 # 配置apache2 现在你已经有了一堆东西了,其中cethik.chained.crt , cethik.crt , cethik.vip.key是要用到的,把它们放在/etc/apache2/ssl文件夹下,如果没有ssl这个文件夹,mkdir /etc/apache2/ssl即可。

配置SSL证书

打开/etc/apache2/sites-available/default-ssl.conf , 在ServerAdmin下另起一行,加上ServerName cethik.vip:443 , 找到SSLEngine , SSLCertificateFile , SSLCertificateKeyFile , SSLCertificateChainFile , 并修改成一下内容

1
2
3
4
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/cethik.crt
SSLCertificateKeyFile /etc/apache2/ssl/cethik.vip.key
SSLCertificateChainFile /etc/apache2/ssl/cethik.chained.crt

OK,证书设置完毕,保存退出 , 注意,如果你是第一次使用https , 那么你还要运行这条命令

1
2
3
a2enmod ssl
a2ensite default-ssl.conf
service apache reload

配置HTTPS强制跳转

打开/etc/apache2/sites-available/000-default.conf , 然后再<VirtualHost *:80></VirtualHost>标签内随便一个地方加入以下三行

1
2
3
RewriteEngine on
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*) https://%{SERVER_NAME}$1 [L,R]

强制跳转https配置完毕,保存退出。

使得配置生效

启动rewrite mod

1
a2enmod rewrite

重启apache2

1
service apache2 restart

配置结束。不出意外配置应该已经生效,这里注意两点:

  • 将上面的cethik.vip 替换成你自己的域名
  • 我使用的系统是ubuntu 14.04 x86_64 server , 其他系统不一定适用哦。

热评文章