ubuntu服务器+apache2+letsencrypt+ssl实战

关于ubuntu服务器+apache2 组合配置网站免费ssl : letsencrypt 在网上找了很多资料,东拼西凑最终解决了问题,这里讲过程记录下来,方便后续查阅,也方便又需要的同仁。

在介绍具体的配置之前我们先简单了解下ubuntu系统(不同的linux系统可能存在细微差别)下Apache 配置目录和文件。
/etc/apache2 是存放所有apache相关配置文件的地方,一个最核心的文件就是 apache2.conf, 简单看下该文件的核心配置:

# Include module configuration:
IncludeOptional mods-enabled/*.load
IncludeOptional mods-enabled/*.conf

# Include list of ports to listen on
Include ports.conf

# access here, or in any related virtual host.
<Directory />
    Options FollowSymLinks
    AllowOverride None
    Require all denied
</Directory>

<Directory /usr/share>
    AllowOverride None
    Require all granted
</Directory>

<Directory /var/www/>
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>

<Directory /var/www/html>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>

AccessFileName .htaccess

# Include generic snippets of statements
IncludeOptional conf-enabled/*.conf

# Include the virtual host configurations:
IncludeOptional sites-enabled/*.conf

这是我从我的ubuntu服务器上拷贝出来的,这个conf文件相对于其他linux系统的httpd.conf要简短得多,因为它把一些模块声明文件和配置文件分散到了其它目录了,比如它包含了mods-enabled目录下所有的.load文件和.conf配置文件。所以如果我们要修改具体的配置和开启/禁用某些模块加载可能就需要先找到对应的文件才行,这也是很多新手比较头疼的地方。

/etc/apache2/ports.conf  端口监听配置
/etc/apache2/mods-available/ssl.load  ssl加载模块
/var/www/html/.htaccess  网站全局跳转配置

如果想了解letsencrypt 可以看他们的网站:https://letsencrypt.org/ 免费ssl,目前了解到证书有效期是90天,90天后需要重新跑这个流程,当然续期有些操作可以省掉。

1. 首先第一步安装 letsencrypt :

sudo apt-get install letsencrypt

2. 生成证书:

letsencrypt certonly --renew-by-default --email yumysoft@gmail.com -d yumysoft.com -d www. yumysoft.com
certonly 表示只颁发证书
--email : 你的邮箱地址
-d : 指定希望应用https的网站地址,可以同时制定多个

执行命令后会出如下提示:


20160328141422096.png

点击ok,正常情况下会提示:

Congratulations! Your certificate and chain have been saved at /etc/letsencrypt/live/domain.com/fullchain.pem...

说明证书生成成功,默认会保存在/etc/letsencrypt/live/domain.com 目录下.

3. 使用证书:

找到ssl配置文件配置VirtualHost,这个在ubuntu 系统下有点特殊,网上找到的资料基本说了ssl.conf, httpd-ssl.conf 这几个文件都没有找到,通过摸索,发现apache端口定义都放在 /etc/apache2/ports.conf文件中:

# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default.conf
Listen 80

<IfModule ssl_module>
        Listen 443
</IfModule>

而且这个文件头部明显说明了配置VirtualHost的地方在/etc/apache2/sites-enabled/000-default.conf这个文件去配置, 所有找到这个文件,我吗看到了80端口的监听配置,在后面追加如下443端口配置:

<VirtualHost *:443>
DocumentRoot "/var/www/html"
ServerName www.yumysoft.com
ServerAlias yumysoft.com
SSLEngine on
SSLProtocol TLSv1 TLSv1.1 TLSv1.2
SSLCertificateFile /etc/letsencrypt/live/yumysoft.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/yumysoft.com/privkey.pem
</VirtualHost>

目前实测,配置这些参数已经可以实现ssl安全访问网站,更多更全参数参考如下:

<VirtualHost *:443> 
 DocumentRoot "C:/phpstudy/WWW" 
 ServerName www.youdomain.cn 
 ServerAlias youdomain.cn 
 SSLEngine on 
 SSLProtocol TLSv1 TLSv1.1 TLSv1.2 
 SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5 
 SSLCertificateFile "C:/phpstudy/Apache/conf/2_www.youdomain.cn.crt" 
 SSLCertificateKeyFile "C:/phpstudy/Apache/conf/3_www.youdomain.cn.key" 
 SSLCertificateChainFile "C:/phpstudy/Apache/conf/1_root_bundle.crt" 
 
 <Directory "C:/phpstudy/WWW/> 
 Options FollowSymLinks ExecCGI 
 AllowOverride All 
 Order allow,deny 
 Allow from all 
 Require all granted 
 </Directory> 
</VirtualHost> 

从其他地方拷贝过来的,具体效果可自行研究验证.

重启apache

配置完后,重启apache:
service apache2 restart

done, perfect!!!

错误解决:

在执行apache重启命令的时候可能碰到如下错误提醒:

Invalid command 'SSLEngine', perhaps misspelled or defined by a module not included in the server configuration

导致这个问题是因为没有启用ssl模块,执行如下命令重启apache可解决问题:

a2enmod ssl
service apache2 restart

关于http自动跳转https

我们可能还希望用户在输入http浏览时自动重定向到https安全服务, 首先启动重定向:

sudo a2enmod rewrite 
或者
sudo ln -s /etc/apache2/mods-available/rewrite.load  /etc/apache2/mods-enabled/rewrite.load

有以下几种做法:

  1. 修改网站跟目录 .htaccess文件,实现自动跳转, 一般wordpress网站会有一个默认配置
<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteBase / 
    RewriteCond %{SERVER_PORT} !^443$
    RewriteRule ^.* https://%{SERVER_NAME}%{REQUEST_URI} [L,R]
</IfModule>
  1. 修改 /etc/apache2/apache2.conf 文件:
<Directory /var/www/html>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
        RewriteEngine On
        RewriteCond %{SERVER_PORT} 80
        RewriteRule ^(.*)?$ https://%{SERVER_NAME}/$1 [L,R]
</Directory>
  1. 打开 /etc/apache2/sites-available/000-default.conf

在 <\VirtualHost *:80><\VirtualHost> 标签内随便一个地方加入以下三行

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

more...

到最后发现有的文章指出可以通过certbot工具在生成证书的时候制定生成ssl.conf文件,如下:

certbot-auto certonly --apache --apache-le-vhost-ext/etc/httpd/conf.d/ssl.conf -d mj.AA.com.cn -d game.aa.com.cn

效果如何,待君验证

参考资料:### 征服 Apache + SSL
ubuntu16.04服务器apache的ssl证书配置
https://docs.woocommerce.com/document/ssl-and-https/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 195,898评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,401评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 143,058评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,539评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,382评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,319评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,706评论 3 386
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,370评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,664评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,715评论 2 312
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,476评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,326评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,730评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,003评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,275评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,683评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,877评论 2 335

推荐阅读更多精彩内容