owncloud 开启 ssl 访问
ownCloud 使每个人都有能力创建自己的云服务器,而无需支付服务费用或申请许可。个人云存储提供了更灵活的选择,用户可以完全控制它,而非受制于第三方。这意味着更低的成本,更大的自主性,减少信息外泄风险和广泛的适应性。--wiki
既然是文件服务器,就不得不讨论一下安全性,官方也建议使用https进行访问。由于官方对开启ssl的描述过于简单,所以觉得有必要记录一下。
#新建ssl key和证书存放目录
mkdir -p /home/owncloud/httpd-2.4.20/conf/ssl
#新建key和证书
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /home/owncloud/httpd-2.4.20/conf/ssl/server.key -out /home/owncloud/httpd-2.4.20/conf/ssl/server.crt
#开启相关模块
vi /home/owncloud/httpd-2.4.20/conf/httpd.conf
####
LoadModule ssl_module modules/mod_ssl.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
Include conf.d/*.conf
####
#新建单独配置
vi /home/owncloud/httpd-2.4.20/conf.d/owncloud.conf
####
Listen 443
SSLCipherSuite HIGH:MEDIUM:!MD5:!RC4
SSLProxyCipherSuite HIGH:MEDIUM:!MD5:!RC4
SSLHonorCipherOrder on
SSLProtocol all -SSLv3
SSLProxyProtocol all -SSLv3
SSLPassPhraseDialog builtin
SSLSessionCache "shmcb:/home/owncloud/httpd-2.4.20/logs/ssl_scache(512000)"
SSLSessionCacheTimeout 300
ServerName 127.0.0.1
Redirect permanent / https://127.0.0.1
SSLEngine on
ServerName owncloud.woego.cn:443
SSLCertificateFile /home/owncloud/httpd-2.4.20/conf/ssl/server.crt
SSLCertificateKeyFile /home/owncloud/httpd-2.4.20/conf/ssl/server.key
Header always set Strict-Transport-Security "max-age=15768000; includeSubDomains; preload"
####
#添加信任IP
vi /home/owncloud/owncloud/config/config.php
####
array (
0 => '127.0.0.1:80',
1 => '127.0.0.1:443',
),
####
#重启apache
sudo /home/owncloud/httpd-2.4.20/bin/apachectl restart
验证https成功后,可在.htaccess里面加入下面规则,把非http请求重定向到https:
vi .htaccess
####
#http转https
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*) https://xxx.xxx.xxx/$1 [R=301,L] #把"xxx.xxx.xxx"更换成实际域名或IP
####
注意,即使你已经按照上述步骤做了,在你启动ownCloud你仍将看到一条错误消息,指出该证书尚未被受信的机构颁发(那是因为我们创建了一个自签名证书)。您可以放心地忽略此消息,但如果你考虑在生产服务器上部署ownCloud,你可以从一个值得信赖的公司购买证书。