如何在 ownCloud 中将 HTTPS 与 DHCP 结合使用?

如何在 ownCloud 中将 HTTPS 与 DHCP 结合使用?

系统:Ubuntu 14.04 服务器,Apache 2.4,ownCloud 8.2.5,测试环境 Raspberry Pi 3 上的 Raspbian Jessie b. 服务器的 Internet 浏览器中出现有关 HTTPS 的错误,当访问https://192.168.1.107https://192.168.1.107

Error performing TLS handshake: An unexpected TLS packet was received.

调试

  • 对于 HTTP,命令只是挂在那里,对于 HTTPStelnet 192.168.1.107 80也类似。telnet 192.168.1.107 443
  • 在互联网浏览器中访问 HTTP 时有效,但不能http://192.168.1.107像以前一样http://192.168.1.107/owncloudtelnet
  • 日志/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 的差不多

  1. /etc/apache2/sites-available/000-default.conf000-default-ssl.conf
  2. /etc/apache2/sites-enabled/ln -s /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-enabled/000-default.confln -s /etc/apache2/sites-available/000-default-ssl.conf
  3. /etc/apache2/conf-available/owncloud.conf
  4. /etc/apache2/conf-enabled/:ln -s /etc/apache2/conf-available/owncloud.conf /etc/apache2/conf-enabled/owncloud.conf和其他符号链接。
  5. 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-x7 个符号链接中的设置

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 ServerServer: 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>

有关配置 HTTPS 的 Ubuntu 文档

答案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 下运行

相关内容