![如何在 ownCloud 中将 HTTPS 与 DHCP 结合使用?](https://linux22.com/image/883010/%E5%A6%82%E4%BD%95%E5%9C%A8%20ownCloud%20%E4%B8%AD%E5%B0%86%20HTTPS%20%E4%B8%8E%20DHCP%20%E7%BB%93%E5%90%88%E4%BD%BF%E7%94%A8%EF%BC%9F.png)
系统:Ubuntu 14.04 服务器,Apache 2.4,ownCloud 8.2.5,测试环境 Raspberry Pi 3 上的 Raspbian Jessie b. 服务器的 Internet 浏览器中出现有关 HTTPS 的错误,当访问https://192.168.1.107
和https://192.168.1.107
Error performing TLS handshake: An unexpected TLS packet was received.
调试
- 对于 HTTP,命令只是挂在那里,对于 HTTPS
telnet 192.168.1.107 80
也类似。telnet 192.168.1.107 443
- 在互联网浏览器中访问 HTTP 时有效,但不能
http://192.168.1.107
像以前一样http://192.168.1.107/owncloud
telnet
- 日志
/var/log/apache2/error.log
中没有近期错误。/var/log/apache2/access.log
和中均无错误/var/log/apache2/other_vhosts_access.log
。
的输出sudo apache2ctl -M |sort
是
access_compat_module (shared)
alias_module (shared)
auth_basic_module (shared)
authn_core_module (shared)
authn_file_module (shared)
authz_core_module (shared)
authz_host_module (shared)
authz_user_module (shared)
autoindex_module (shared)
core_module (static)
deflate_module (shared)
dir_module (shared)
env_module (shared)
filter_module (shared)
headers_module (shared)
http_module (static)
Loaded Modules:
log_config_module (static)
logio_module (static)
mime_module (shared)
mpm_prefork_module (shared)
negotiation_module (shared)
php5_module (shared)
rewrite_module (shared)
setenvif_module (shared)
socache_shmcb_module (shared)
so_module (static)
ssl_module (shared)
status_module (shared)
unixd_module (static)
version_module (static)
watchdog_module (static)
我的设置应该和 John 的差不多
/etc/apache2/sites-available/
:000-default.conf
和000-default-ssl.conf
。/etc/apache2/sites-enabled/
:ln -s /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-enabled/000-default.conf
和ln -s /etc/apache2/sites-available/000-default-ssl.conf
。/etc/apache2/conf-available/
:owncloud.conf
/etc/apache2/conf-enabled/
:ln -s /etc/apache2/conf-available/owncloud.conf /etc/apache2/conf-enabled/owncloud.conf
和其他符号链接。error-ssl.log
并且access-ssl.log
习惯不将它们与标准日志混合sites-available/000-default-ssl.conf
。
我的ssl
证书和密钥在 中/etc/ssl/
。/etc/apache2/sites-enabled/000-default.conf
我关注了该线程这里
SSLEngine on
SSLCertificateFile /etc/ssl/apache.crt
SSLCertificateKeyFile /etc/ssl/apache.key
我唯一的不同之处在于我没有这些行,SSLCertificateChainFile /etc/ssl/subca.crt; SSLCACertificateFile /etc/ssl/ca.crt
因为我不应该有 ChainFile。文件/var/www/owncloud/config/config.php
是
<?php
$CONFIG = array (
'instanceid' => 'yours',
'passwordsalt' => 'yours',
'secret' => 'yours',
'trusted_domains' =>
array (
0 => '192.168.1.107',
1 => '192.168.1.1',
2 => 'localhost',
),
'datadirectory' => '/var/www/owncloud/data',
'overwrite.cli.url' => '192.168.1.107/owncloud',
'dbtype' => 'sqlite3',
'version' => '8.2.5.2',
'logtimezone' => 'UTC',
'installed' => true,
'memcache.local' => '\\OC\\Memcache\\APCu',
'theme' => '',
'loglevel' => 2,
'maintenance' => false,
'trashbin_retention_obligation' => 'auto',
'mail_from_address' => 'masimasi',
'mail_smtpmode' => 'sendmail',
'mail_domain' => 'gmail.com',
'mail_smtpauthtype' => 'LOGIN',
'mail_smtphost' => 'smtp.gmail.com',
'mail_smtpport' => '587',
);
/etc/apache2/sites-available/000-default-ssl.conf
是
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerAdmin webmaster@localhost
ServerName localhost
DocumentRoot /var/www/html
ErrorLog /var/log/apache2/error.log
CustomLog /var/log/apache2/access.log combined
SSLEngine on
SSLProtocol all -SSLv2
SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIU
SSLCertificateFile /etc/ssl/apache.crt
SSLCertificateKeyFile /etc/ssl/apache.key
SetEnvIf User-Agent .*MSIE.* nokeepalive ssl-unclean-shutdown
CustomLog /var/log/apache2/ssl_request_log \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
</VirtualHost>
</IfModule>
权限/所有者644/root:root
应该正确理解 SSL
ls -ls /etc/apache2/ssl/
total 8
4 -rw-r--r-- 1 root root 1484 May 31 15:17 apache.crt
4 -rw-r--r-- 1 root root 1704 May 31 15:17 apache.key
sites-x
两个符号链接中的设置
ls -la /etc/apache2/sites-available/
total 16
drwxr-xr-x 2 root root 4096 May 31 21:52 .
drwxr-xr-x 9 root root 4096 May 31 15:44 ..
-rw-r--r-- 1 root root 183 May 31 19:43 000-default.conf
-rw-r--r-- 1 root root 916 May 31 21:50 000-default-ssl.conf
ls -la /etc/apache2/sites-enabled/
total 8
drwxr-xr-x 2 root root 4096 May 31 19:38 .
drwxr-xr-x 9 root root 4096 May 31 15:44 ..
lrwxrwxrwx 1 root root 45 May 31 19:35 000-default.conf -> /etc/apache2/sites-available/000-default.conf
lrwxrwxrwx 1 root root 35 May 31 11:50 000-default-ssl.conf -> ../sites-available/000-default.conf
conf-x
7 个符号链接中的设置
ls -la /etc/apache2/conf-available/
total 40
drwxr-xr-x 2 root root 4096 May 31 20:07 .
drwxr-xr-x 9 root root 4096 May 31 15:44 ..
-rw-r--r-- 1 root root 315 Oct 24 2015 charset.conf
-rw-r--r-- 1 root root 127 Jul 29 2013 javascript-common.conf
-rw-r--r-- 1 root root 3224 Oct 24 2015 localized-error-pages.conf
-rw-r--r-- 1 root root 189 Oct 24 2015 other-vhosts-access-log.conf
-rw-r--r-- 1 root root 410 May 31 19:11 owncloud.conf
-rw-r--r-- 1 root root 655 Feb 19 2015 phppgadmin.conf
-rw-r--r-- 1 root root 2190 Nov 28 2015 security.conf
-rw-r--r-- 1 root root 455 Oct 24 2015 serve-cgi-bin.conf
ls -la /etc/apache2/conf-enabled/
total 8
drwxr-xr-x 2 root root 4096 May 31 13:45 .
drwxr-xr-x 9 root root 4096 May 31 15:44 ..
lrwxrwxrwx 1 root root 30 May 31 11:50 charset.conf -> ../conf-available/charset.conf
lrwxrwxrwx 1 root root 44 May 31 11:50 localized-error-pages.conf -> ../conf-available/localized-error-pages.conf
lrwxrwxrwx 1 root root 46 May 31 11:50 other-vhosts-access-log.conf -> ../conf-available/other-vhosts-access-log.conf
lrwxrwxrwx 1 root root 31 May 31 13:45 owncloud.conf -> ../conf-available/owncloud.conf
lrwxrwxrwx 1 root root 33 May 31 12:03 phppgadmin.conf -> ../conf-available/phppgadmin.conf
lrwxrwxrwx 1 root root 31 May 31 11:50 security.conf -> ../conf-available/security.conf
lrwxrwxrwx 1 root root 36 May 31 11:50 serve-cgi-bin.conf -> ../conf-available/serve-cgi-bin.conf
JohnOrion 对该问题的假设:
您可以尝试设置一个静态 IP 地址,并正确设置网络,这样您就可以在服务器计算机上的浏览器中输入 localhost,它就会转到该站点。如果没有,那可能是一个问题。如果 SSL 正在寻找 localhost,但由于某种原因您的网络没有显示指向您本地 IP 的 localhost,所以找不到它。那可能就是原因。
我对问题的假设。命令的输出curl --head localhost | grep Server
中Server: Apache/2.4.10
没有表明 SSL 模块已正确加载。我认为在某些情况下应该这样做。不确定。
制作 SSL 密钥/crt
线关于执行.key 和.crt。
问题不在于它是一个自签名证书,而是通用名称必须包含子域。我只用通用名称 domain.com 签署了证书,但我的 owncloud 在 cloud.domain.com 中运行
这里但是关于localhost通用名称应该192.168.1.107
没有尾随斜杠,这在我的系统中现在是正确的。
如何为本地主机签署自我证书?
我将其包含192.168.1.107/owncloud
在通用名称中但不确定它是否正确。
如何在 ownCloud 中将自签名 HTTPS 与 DHCP 结合使用?
答案1
失败的原因可能是您没有为 https 配置服务器。Apache 的 https 配置要求您监听端口 443 和端口 80,并使用证书为 TLS 配置服务器。
(示例来自 apache 文档)
LoadModule ssl_module modules/mod_ssl.so
Listen 443
<VirtualHost *:443>
ServerName www.example.com
SSLEngine on
SSLCertificateFile "/path/to/www.example.com.cert"
SSLCertificateKeyFile "/path/to/www.example.com.key"
</VirtualHost>
答案2
由于您似乎没有启用完整的网站,也许这就是您无法使重定向正常工作的原因。我尝试重现此问题……我发现的第一个问题是重定向未添加/
我提到的。由于这没有解决问题,我还使用了重写功能强制 owncloud 转到 https。这是我的解决方法:
转到 owncloud 所在目录/var/www/owncloud
并打开 .htaccess 文件。
向下滚动到靠近底部的位置,您将看到#### DO NOT CHANGE ANYTHING ABOVE THIS LINE ####
在下方添加以下几行:
<IfModule mod_rewrite.c>
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]
</IfModule>
所以它应该看起来像这样
Options -Indexes
<IfModule pagespeed_module>
ModPagespeed Off
</IfModule>
#### DO NOT CHANGE ANYTHING ABOVE THIS LINE ####
#### Part you need to add #####
<IfModule mod_rewrite.c>
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]
</IfModule>
#### end of part you need to add ####
ErrorDocument 403 /owncloud/core/templates/403.php
ErrorDocument 404 /owncloud/core/templates/404.php
<IfModule mod_rewrite.c>
RewriteRule . index.php [PT,E=PAT
这应该使用重写规则强制 owncloud 在 https 下运行