Ubuntu 设定 Apache 使用 SSL 网站 (Self Signed)

阿舍后来就真的在阿舍的 VPS 上装了 OwnCloud 2,还不错用,不过,阿舍用一用就想到这个安全的问题,资料这样上传和下传,没有经过加密,那不就任何人都可以捞去研究、研究吗 ? 所以,阿舍就要把 OwnCloud 的网站弄成有 SSL 支援的,可是,一个公开经过第三方认证的 SSL 凭证,一年要花 50 ~ 70 美元,阿舍只是要自己用用而已,应该是不用花这钱才是哩 !



后来,阿舍才想起来,阿舍在若干年前有用 Lotus Domino 当 CA 伺服器,可以自己发凭证给自己,所以,阿舍就去找找看 Ubuntu 和 Apache 要怎么做的到,结果,阿舍就找到这篇这篇这篇有说明如何弄,阿舍在 Ubuntu 11.10 测试了一下,果然是可以的,阿舍把操作步骤整理如下。( 阿舍的经验来说,这些设定应该也适用在 Ubuntu 10.04、Ubuntu 10.10 和 Ubuntu 11.04 等版本。)



1.安装 OpenSSL

Ubuntu 在 10.04 后,好像就有预装 OpenSSL 了,可以用下面的指令装装看,有装过再装一遍也不会有事的哩 !

$ sudo apt-get install openssl


2.启用 Apache 2 的 SSL 模组

Apache 预设是没有启用 SSL 模组的,请用下面的指令来启用。

$ sudo a2enmod ssl

3.建立放凭证的资料夹

请先用下面的指令来建立立要放凭证的资料夹,在下一个步骤会用到。

$ sudo mkdir /etc/apache2/ssl

4.建立自己的认证

请用下面的指令来产生凭证,-days 后面的参数365是凭证的有效日期,可以依需要自行调整,-out 和 –keyout 是凭证和金钥产出后要存放的路径。

$ openssl req -new -x509 -days 365 -nodes -out /etc/apache2/ssl/apache.pem -keyout /etc/apache2/ssl/apache.key

执行上面的指令之后,会出现下面的问题,这些是会写到凭证里的资讯,但是,不一定要全都填的。



5.修改虚拟主机的设定
阿舍是把OwnCloud 2 装在虚拟主机里,所以,要调整拟主机的设定档,把第一行由原来的“*:80”改成“_default_:443”,然后再加入下面的三行,如果产生凭证时,有变更过产出的档名或路径时,就要修改第二行和第三的路径和档名。

<VirtualHost _default_:443>
       SSLEngine On
       SSLCertificateFile /etc/apache2/ssl/apache.pem
       SSLCertificateKeyFile /etc/apache2/ssl/apache.key

...


6.重启 Apache 2

启用好 Apache 的 SSL 模组并设定好虚拟主机之后,就要把 Apache 重启来让新设定生效,请下面的指令来重新启动 Apache。

$ sudo /etc/init.d/apache restart



$ sudo service apache2 restart (Ubuntu 11.10)

7. 设定防火墙
如果有启用防火墙的话,要打开 443 埠号,不然,网站会打不开的,阿舍有启用 ufw,所以,就用下面的指令来启用 443 port。

$ sudo ufw allow 443

8.开启网站
最后,就可以用“https://”来开启网站,如果 SSL 有设定成功,应该就会出现警告讯息,这是因为凭证没有经过第三方公司认证过,所以,浏览器会警告说这个凭证可能是假的,不要管它,继续操作下去就好了,如果是用 Firefox,就要点选“新增例外网站”,如果是用 Chrome,那就要点选“仍要继续”, IE 的话,就点选“继续浏览此网站(不建议)”的连结进入网站,进入网站之后,应詃就是用 https,也就是 SSL 在连线了哩 !

进入网站后,如果去点选网址列的凭证资讯,应该就会出现之前在步骤 4 所输入的资讯哩 !

更新:
其实,现在用 Let's Encrypt 来申请凭证已经很方便了,如果,想体会一下真正设定凭证的感觉和差别,然后,又自己有一个网域可以试的话,阿舍就建议直接到 Let's Encrypt 网站去申一个凭证哩 ...


共享: