开始让我们在Ubuntu上加密SSL证书

本教程将引导您通过我们的加密认证来首次配置SSL网站。 让我们加密是一个新的SSL授权机构,提供免费的SSL证书。 我们将使用两个现有教程(“ 如何使用我们的加密证书设置中间兼容SSL网站 ”和“ 完美服务器 - Ubuntu 15.10(Wily Werewolf)”,其中包含Apache,PHP,MySQL,PureFTPD,BIND,Postfix,Dovecot和ISPConfig 3 “)。

这里描述的设置与任何Ubuntu LAMP服务器兼容,因此您可以使用这一个作为基础设置。

本教程将向您展示如何在不使用ISPConfig 3的服务器上进行加密,因为即将在下一个ISPConfig 3版本(3.1版)中直接实现Let's Encrypt服务。 因此,如果您打算使用ISPConfig,请等待3.1版本和新教程。

创建网站

第一步是创建网站配置和目录并启用SSL(Apache mod_ssl)。 如果您对服务器上的一个网站使用默认配置,或者计划使用多个vhost来托管多个域,则由您决定。 为了更可靠和可扩展的使用,我将为Azure的“实验室”域isp1.cloudapp.net创建一个vhost配置。

默认情况下,所有vhosts都存储在/ etc / apache2 / sites-available目录中。 运行以下命令检索现有虚拟机配置文件的列表。

ls -l /etc/apache2/sites-available/

我的输出如下所示:

root@isp1:/home/falco# ls -l /etc/apache2/sites-available/
-rw-r--r-- 1 root root 1332 May 20 2015 000-default.conf
-rw-r--r-- 1 root root 6437 May 20 2015 default-ssl.conf

我们现在可以使用“默认”配置文件进行克隆和编辑,也可以使用我们自己的配置。 我喜欢使用我自己的配置,因为我这样做了很多年,所以让我们通过创建一个新的vhost创建文件:

vi /etc/apache2/sites-available/isp1.cloudapp.net.conf

在此文件中粘贴以下内容:

<VirtualHost *:80>
ServerName isp1.cloudapp.net
ServerAlias www.isp1.cloudapp.net

DocumentRoot /home/web/isp1.cloudapp.net/public_html

ErrorLog /home/web/isp1.cloudapp.net/log/habdak.eu_error_log
CustomLog /home/web/isp1.cloudapp.net/log/habdak.eu_access_log combinedScriptAlias /cgi-bin/ /home/web/isp1.cloudapp.net/cgi-bin/
DirectoryIndex index.html index.htm index.php index.php4 index.php5

<Directory /home/web/isp1.cloudapp.net/public_html>
Options -Indexes +IncludesNOEXEC +SymLinksIfOwnerMatch +ExecCGI
allow from all
AllowOverride All Options=ExecCGI,Includes,IncludesNOEXEC,Indexes,MultiViews,SymLinksIfOwnerMatch
Require all granted
AddType application/x-httpd-php .php
AddType application/json .json
</Directory>

<Directory /home/web/isp1.cloudapp.net/cgi-bin>
allow from all
AllowOverride All Options=ExecCGI,Includes,IncludesNOEXEC,Indexes,MultiViews,SymLinksIfOwnerMatch
Require all granted
</Directory>

RemoveHandler .php
RemoveHandler .php5
php_admin_value engine Off
IPCCommTimeout 301
FcgidMaxRequestLen 1073741824
php_value memory_limit 128M
php_value suhosin.session.encrypt Off

</VirtualHost>

<VirtualHost *:443>

ServerName isp1.cloudapp.net
ServerAlias www.isp1.cloudapp.net
DocumentRoot /home/web/isp1.cloudapp.net/public_html

ErrorLog /home/web/isp1.cloudapp.net/log/habdak.eu_error_log
CustomLog /home/web/isp1.cloudapp.net/log/habdak.eu_access_log combined

ScriptAlias /cgi-bin/ /home/web/isp1.cloudapp.net/cgi-bin/
DirectoryIndex index.html index.htm index.php index.php4 index.php5

<Directory /home/web/isp1.cloudapp.net/public_html >
Options -Indexes +IncludesNOEXEC +SymLinksIfOwnerMatch +ExecCGI
allow from all
AllowOverride All Options=ExecCGI,Includes,IncludesNOEXEC,Indexes,MultiViews,SymLinksIfOwnerMatch
Require all granted
AddType application/x-httpd-php .php
AddType application/json .json
</Directory>

<Directory /home/web/isp1.cloudapp.net/cgi-bin >
allow from all
AllowOverride All Options=ExecCGI,Includes,IncludesNOEXEC,Indexes,MultiViews,SymLinksIfOwnerMatch
Require all granted
</Directory>

RemoveHandler .php
RemoveHandler .php5
php_admin_value engine Off
IPCCommTimeout 301
FcgidMaxRequestLen 1073741824
php_value memory_limit 128M
php_value suhosin.session.encrypt Off

SSLEngine on
SSLCertificateFile /home/web/isp1.cloudapp.net /ssl.cert
SSLCertificateKeyFile /home/web/isp1.cloudapp.net /ssl.key
SSLCACertificateFile /home/web/isp1.cloudapp.net /ssl.ca
SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:ECDHE-RSA-DES-CBC3-SHA:ECDHE-ECDSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA
SSLProtocol All -SSLv2 -SSLv3
SSLCompression off
SSLHonorCipherOrder On

</VirtualHost>

将域名替换为您的域,并保存文件。 要激活配置,请运行:

a2ensite isp1.cloudapp.net.conf

现在重新放置网站的文件夹:

mkdir /home/web
mkdir /home/web/isp1.cloudapp.net
mkdir /home/web/isp1.cloudapp.net/public_html
mkdir /home/web/isp1.cloudapp.net/cgi-bin
mkdir /home/web/isp1.cloudapp.net/logs

重新启动apache以应用新配置:

sudo service apache2 restart

现在我们必须生成证书文件。

安装我们加密并生成您的第一个SSL证书

  我更喜欢使用根登录进行管理,而不是在每个命令之前运行sudo,所以让我们su到root用户:

sudo su

浏览到您的根目录:

cd ~root

安装git以获取我们加密git仓库文件:

apt-get install git

现在克隆让我们加密git仓库:

git clone https://github.com/letsencrypt/letsencrypt.git letsencrypt

导航到您的新的letencrypt文件夹:

cd letsencrypt

并请求您的SSL证书:

./letsencrypt-auto certonly --webroot -w /home/web/isp1.cloudapp.net/public_html -d isp1.cloudapp.net

如果您要求主域(第1级域名为cloudapp.net)的证书,请使用-d参数两次。 有和没有www前缀像这样:

 ./letsencrypt-auto certonly --webroot -w /home/web/cloudapp.net/public_html -d cloudapp.net -d www.cloudapp.net

如果您不这样做,证书将不适用于使用www前缀打开您的网站的访问者。

您还可以将其他子域添加到一个证书。 例如,如果您的子域名admin.cloudapp.net与同一个站点(服务器上的同一个文件夹)匹配,则应将其添加到此证书中。 不幸的是,你不能使用通配符(* .cloudapp.net)来加密。

让我们加密会自动更新所有依赖关系,并引导您完成设置。 所有您需要做的是等待提示窗口询问您的电子邮件地址。 该地址仅用于恢复丢失的数据。

您的新密钥现在存储在/ etc / letsencrypt /中。 我们将链接到我们的网站目录,以便稍后管理密钥。

ln -s /etc/letsencrypt/archive/isp1.cloudapp.net/cert1.pem /home/web/isp1.cloudapp.net/ssl.cert
ln -s /etc/letsencrypt/archive/isp1.cloudapp.net/chain1.pem /home/web/isp1.cloudapp.net/ssl.ca
ln -s /etc/letsencrypt/archive/isp1.cloudapp.net/privkey1.pem /home/web/isp1.cloudapp.net/ssl.key

现在您应该可以使用SSL访问您的网站。 让我们加密将通过向您发送安装“Let's Encrypt”中提供的地址的电子邮件,自动通知您有关到期证书。

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏