[问题已基本解决]owncloud如何使用openssl自签证书


#1

我是一个 opensuse 的使用者,不是技术人员,使用 linux 只是想提高安全性。

最近需要使用局域网网盘,搭建了一个 owncloud,使用的是官方的源。
download.owncloud.org/download/repositories/stable/openSUSE_Leap_42.2/
但是我常使用的 firefox 提醒的对,应该使用 SSL。但是在局域网使用,没有必要买证书,所以就选择了 openssl 。
所以啊,在 baidu 和 google 中查找了一番,果断实验,但是没有一个成功的。
比如这个: zhidao.baidu.com/question/1833659810710006300.html 按照这个写法,连 apache2 都不能启动。
unixman 里面有一个外国人写的,按照他的文章操作,apache2 能启动,但是依然不是 https。
几乎所有的帖子都是同样的思路和代码。不知道是我操作不对还是 opensuse 的特殊性,前后一共操作了好多天,都没有一次成功。

论坛里面有朋友安装了 owncloud+lamp 的,麻烦给帮个忙。感谢

为了演示使用如下的地址:http://www.cnblogs.com/findumars/p/4862162.html

操作如下:
编辑 /etc/apache2/conf.d/owncloud.conf 启用 HTTPS。对于重写规则中的 NC、R 和 L 的意义,你可以参考 Apache 文档:

Alias /owncloud /var/www/owncloud  ==== 这里我将地址修改为 owncloud 命令的目录 /usr/bin/owncloud


<VirtualHost 192.168.0.15:80>   ===== 这里我将 ip 修改为自己的 192.168.86.100:80
    RewriteEngine on
    ReWriteCond %{SERVER_PORT} !^443$
    RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [NC,R,L]
</VirtualHost>

<VirtualHost 192.168.0.15:443>    ===== 这里我将 ip 修改为自己的 192.168.86.100:443
    SSLEngine on
    SSLCertificateFile /etc/apache2/ssl/apache.crt
    SSLCertificateKeyFile /etc/apache2/ssl/apache.key
    DocumentRoot /var/www/owncloud/
<Directory /var/www/owncloud>     ===== 这里我将地址修改为 /srv/www/htdocs/owncloud
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>
</VirtualHost>

启用重写模块并重启 Apache:

# a2enmod rewrite
# systemctl restart apache2 

重启 apache2 出现: Job for apache2.service failed the control process exited with error code. See “systemctl status apache2.service” and " journalctl -xe " for details.

cnblogs.com/findumars/p/4862162.html
错误详细情况如下:

● apache2.service - The Apache Webserver
   Loaded: loaded (/usr/lib/systemd/system/apache2.service; enabled; vendor preset: disabled)
   Active: failed (Result: exit-code) since 四 2017-10-05 22:19:33 CST; 2min 49s ago
  Process: 4583 ExecStop=/usr/sbin/start_apache2 -DSYSTEMD -DFOREGROUND -k graceful-stop (code=exited, status=1/FAILURE)
  Process: 4574 ExecStart=/usr/sbin/start_apache2 -DSYSTEMD -DFOREGROUND -k start (code=exited, status=1/FAILURE)
 Main PID: 4574 (code=exited, status=1/FAILURE)

10 月 05 22:19:33 linux-mf16.suse systemd[1]: Starting The Apache Webserver...
10 月 05 22:19:33 linux-mf16.suse start_apache2[4574]: AH00526: Syntax error on line 17 of /etc/apache2/conf.d/owncloud.conf:
10 月 05 22:19:33 linux-mf16.suse start_apache2[4574]: Invalid command 'Order', perhaps misspelled or defined by a module not included in the server configuration
10 月 05 22:19:33 linux-mf16.suse systemd[1]: apache2.service: Main process exited, code=exited, status=1/FAILURE
10 月 05 22:19:33 linux-mf16.suse start_apache2[4583]: AH00526: Syntax error on line 17 of /etc/apache2/conf.d/owncloud.conf:
10 月 05 22:19:33 linux-mf16.suse start_apache2[4583]: Invalid command 'Order', perhaps misspelled or defined by a module not included in the server configuration
10 月 05 22:19:33 linux-mf16.suse systemd[1]: apache2.service: Control process exited, code=exited status=1
10 月 05 22:19:33 linux-mf16.suse systemd[1]: Failed to start The Apache Webserver.
10 月 05 22:19:33 linux-mf16.suse systemd[1]: apache2.service: Unit entered failed state.
10 月 05 22:19:33 linux-mf16.suse systemd[1]: apache2.service: Failed with result 'exit-code'.

============== 经过查看,错误出现在 17,18 行

日志文件记录的错误:

-- Subject: apache2.service 单元已开始停止操作
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- apache2.service 单元已开始停止操作。
10 月 05 22:16:00 linux-mf16.suse start_apache2[4493]: AH00526: Syntax error on line 17 of /etc/apache2/conf.d/owncloud.conf:
10 月 05 22:16:00 linux-mf16.suse start_apache2[4493]: Invalid command 'Order', perhaps misspelled or defined by a module not included in the server configuration
10 月 05 22:16:00 linux-mf16.suse systemd[1]: apache2.service: Control process exited, code=exited status=1
10 月 05 22:16:00 linux-mf16.suse systemd[1]: Stopped The Apache Webserver.
-- Subject: apache2.service 单元已结束停止操作
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- apache2.service 单元已结束停止操作。
10 月 05 22:16:00 linux-mf16.suse systemd[1]: apache2.service: Unit entered failed state.
10 月 05 22:16:00 linux-mf16.suse systemd[1]: apache2.service: Failed with result 'exit-code'.
10 月 05 22:16:00 linux-mf16.suse systemd[1]: Starting The Apache Webserver...
-- Subject: apache2.service 单元已开始启动
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- apache2.service 单元已开始启动。
10 月 05 22:16:00 linux-mf16.suse start_apache2[4505]: AH00526: Syntax error on line 17 of /etc/apache2/conf.d/owncloud.conf:
10 月 05 22:16:00 linux-mf16.suse start_apache2[4505]: Invalid command 'Order', perhaps misspelled or defined by a module not included in the server configuration
10 月 05 22:16:00 linux-mf16.suse systemd[1]: apache2.service: Main process exited, code=exited, status=1/FAILURE
10 月 05 22:16:00 linux-mf16.suse start_apache2[4514]: AH00526: Syntax error on line 17 of /etc/apache2/conf.d/owncloud.conf:
10 月 05 22:16:00 linux-mf16.suse start_apache2[4514]: Invalid command 'Order', perhaps misspelled or defined by a module not included in the server configuration
10 月 05 22:16:00 linux-mf16.suse systemd[1]: apache2.service: Control process exited, code=exited status=1
10 月 05 22:16:00 linux-mf16.suse systemd[1]: Failed to start The Apache Webserver.
-- Subject: apache2.service 单元已失败
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- apache2.service 单元已失败。

#2

你所说的没有一个成功,应该把怎么个不成功说清楚,比如仔细描述现象和提供报错信息,不然没人知道发生了什么

ownCloud 官方有个文档: doc.owncloud.org/server/latest/admin_manual/installation/source_installation.html#apache-configuration-label


#3

我是使用 letsencrypt 来给我的 owncloud 加上 HTTPS 的,按照普通的 letsencrypt 证书加密的方式来就好。


#4

也是局域网?


#5

不是局域网,是我自己买的 VPS。


#6

日志已更新。问题主要出现在 apache2 的 /etc/apache2/conf.d/owncloud.conf 的 17,18 行,如下:
Order allow,deny
Allow from all
在这里我确实看不出有什么问题。毕竟我不懂 apache2

谢谢


#7

所以你的问题并不是配置 SSL 不能生效,而是因为配置文件解析错误造成 apache httpd 进程无法启动

出错内容在日志里面写的很清楚了,是 “Order” 这个配置项不识别

start_apache2[4574]: Invalid command ‘Order’, perhaps misspelled or defined by a module not included in the server configuration

不识别的原因是你找的教程都基于 Apache httpd 2.2 版本,但机器上用的是 2.4 这个配置项已经没有了

修复方法是,把

Order allow,deny

改成:

Require all granted

来源: httpd.apache.org/docs/2.4/upgrading.html


#8

谢谢您的恢复。这个问题倒是解决了,可是新的问题又出来了。

经过修改,owncloud.conf 内容如下:
Alias /owncloud /usr/bin/owncloud

<VirtualHost 192.168.56.101:80>
RewriteEngine on
ReWriteCond %{SERVER_PORT} !^443$
RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [NC,R,L]

如果把这段注释掉,会出现 access forbidden 错误。不注释掉,会出现无法链接的情况。


具体情况见图。

LoadModule ssl_module modules/mod_ssl.so
Listen 433
<VirtualHost 192.168.56.101:443>
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key
DocumentRoot /srv/www/htdocs/owncloud ===== 这个地方我有点弄不清楚,估计是错误的。
<Directory /srv/www/htdocs/owncloud> ===== 这个地方我有点弄不清楚,估计是错误的。
Options Indexes FollowSymLinks MultiViews
AllowOverride All
### Order allow,deny
Require all granted
### Allow from all
Require host all

上面 DocumentRoot 和 Driectory 具体的写法有点弄不清楚。看文档写的是一个是网站的根目录,一个是文件的目录。这个具体怎么填写有点晕
我的 owncloud 安装在 /srv/wwww/htdocs/owncloud/,owncloud 命令在 /usr/bin/owncloud。

出现这个问题应该是权限问题,而且有可能是这个地址填写错了。
如果大侠有能力,可以写一个这个方面的帖子。
谢谢。


#9

后面那个现象看起来像是进程没启动起来呃,再贴下报错看看?


#10

问题已经基本解决,谢谢。
参考了一下文章: cnblogs.com/findumars/p/4862162.html ### 只有 openssl 部分,apache2 部分有错误
owncloud 的说明手册 ### 不知道 owncloud 会不会害羞
由 AstroProfundis 提供的 apache 手册 httpd.apache.org/docs/2.4/upgrading.html

操作如下:
1、安装 owncloud,php,mariadb,apache2
2、设置 owncloud
3、使用 openssl 建立证书
4、配置 apache 使用 openssl 建立的证书。 在 /etc/apache2/conf.d/ 下建立 owncloud.conf,内容如下
5、说明
owncloud 的默认安装目录是 /srv/www/htdocs/owncloud
openssl 生成的证书在 /etc/apache2/ssl 目录下
我主机的默认 ip 是 192.168.86.1
配置文件的默认地址是 /etc/apache2/conf.d/owncloud.conf

以下是 ownclou.conf 的内容:

Alias /owncloud “/srv/www/htdocs/owncloud/”
<Directory “/srv/www/htdocs/owncloud”>
Options +FollowSymLinks
AllowOverride All

<IfModule mod_dav.c>
  Dav off
</IfModule>

<IfModule mod_headers.c>
  Header always set Strict-Transport-Security "max-age=15768000; includeSubDomains; preload"
</IfModule>

SetEnv HOME /srv/www/htdocs/owncloud
SetEnv HTTP_HOME /srv/www/htdocs/owncloud

<Directory “/srv/www/htdocs/owncloud/data/”>

just in case if .htaccess gets disabled

Require all denied

以下的部分是自己添加的,而上面的部分则来自 nextcloud 的官方手册和 nextcloud 的配置文件

<VirtualHost 192.168.86.1:80>
ServerName owncloud
Redirect permanent / 192.168.86.1/owncloud

<VirtualHost 192.168.86.1:443>
ServerName owncloud

Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"

SSLEngine on
SSLCertificateFile /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key
DocumentRoot /srv/www/htdocs/owncloud

这个部分是来自网页

<Directory /srv/www/htdocs/owncloud>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Require all granted ## 感谢网友 AstroProfundis 提供的方法
Require host all ## 感谢网友 AstroProfundis 提供的方法

这是 apache2.4 的配置方法,网络上好多是 apache2.2 的配置方法,并不适用于 2.4,启动 apache 的时候会报错

## 这个部分是添加的,来源是 owncloud 和 apache 的手册 ##############################

ServerName 192.168.86.1:80

这个是 systemctl 启动 apache2 的时候,出现下面这个错误的时候添加的,不写也可以。查看是否有这个问题可以使用 sudo systemctl status -l apache2.service

###httpd-prefork: Could not reliably determine the server’s fully qualified domain name, using 这里是你的主机名. Set the ‘ServerName’ directive globally to suppress this message

######### 配置文件结束 ######

说明:下载启动 owncloud,apache,mariadb 正常。不知道什么原因,会出现 apache2 多次重启后,owncloud 不能链接貌似 owncloud 挂了,我没有找到任何的错误提示,估计是 owncloud 的问题。只要不多次重启 apache2,就没有这个问题。
到目前为止,这个问题就算是基本解决了。再次感谢各位提供帮助的网友,以及写 blog 的朋友。


#11

谢谢,我在下面贴了 owncloud 的配置文件。问题已经基本解决