好的,所以我正在尝试将我的服务器配置为接受 SSL 连接,但我无法让它工作。我知道网站上有很多类似的问题,但到目前为止我遇到的每个问题似乎都没有帮助。
我会发布尽可能多的信息,希望能对您有所帮助。
我的 apache 版本是:2.2.14(在 Ubuntu 上运行)。下面的信息似乎表明 SSL 已配置且运行良好,但是当我尝试访问https://website.com 时,请求超时。
我通过 GoDaddy 获得了 SSL 证书,并按照流程生成了 .crt 文件。
我有以下文件:
/home/ubuntu/ssl/website.com.crt
/home/ubuntu/ssl/website.com.key
/home/ubuntu/ssl/gd_bundle.crt
Run Code Online (Sandbox Code Playgroud)
根据我的配置文件:
/etc/apache2/ports.conf
NameVirtualHost *:80
NameVirtualHost *:443
Listen 80
Listen 443
Run Code Online (Sandbox Code Playgroud)
/etc/apache2/sites-enabled/000-default-ssl
<VirtualHost *:443>
ServerAdmin webmaster@localhost
ServerName website.com
DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from …Run Code Online (Sandbox Code Playgroud) 是否可以通过端口 443连接到 HTTP URL(例如,http://www.asdfg.com)?
还是只有 HTTPS URL(例如https://www.asdfg.com)可以通过端口 443 连接?
我有一个代理服务器配置为仅允许通过端口 443。当我尝试连接到 HTTP URL 时,我得到一个504 Gateway Timeout error.
如果我将 URL 中的“http”更改为“https”并尝试在没有代理的情况下进行连接,则会收到消息“未找到请求的资源”。
这种行为的原因是什么?
(这里有很多类似的问题,但我的问题很直接。)
让我用一个例子来解释我的问题:
我想指出网址:
https://www.example.com to Server A (IP aaa.bbb.ccc.ddd)
Run Code Online (Sandbox Code Playgroud)
和
http://www.example.com to Server B (IP eee.fff.ggg.hhh)
Run Code Online (Sandbox Code Playgroud)
那可能吗?如果是,你如何做到这一点?你如何为此设置DNS?
(我在 apache 上,带 cpanel)
谢谢
有可能有这样的东西吗?:
[客户端] ----HTTP--- > [魔术] ----HTTPS----> [服务器]
我有一个 Windows Phone 客户端,它应该连接到我无法控制的 HTTPS 服务器。问题是,测试服务器使用的是自签名证书,而 Windows Phone 不允许连接到证书未由受信任的根证书颁发机构签名的站点。
那么是否有可能让某个软件([Magic])充当客户端的 HTTP 端点,然后它会透明地将请求转发到 HTTPS 服务器?
我听说 ISA 服务器会这样做,但最好使用轻量级解决方案。
我最近将我的网站 SSL 证书换成了新的 Thawte 2048 位证书。
Ubuntu/libcurl 似乎无法验证它。Web 浏览器和 OSX 很好。
我必须从这里手动更新操作系统上的证书包:
任何想法为什么 Ubuntu 没有这些?
谢谢
标记
这是关于两个子域。第一个 (www) 应该通过 http 访问。第二个(云)应该通过 https 访问。
这些是我的条目的相关部分:
server {
listen 80;
server_name cloud.example.de;
rewrite ^ https://$server_name$request_uri? permanent; # enforce https
}
server {
listen 443 ssl;
server_name cloud.example.de;
root /home/user/web/cloud;
}
server {
listen 80;
server_name www.example.de;
root /home/user/web/cms;
#etc.
}
Run Code Online (Sandbox Code Playgroud)
当我现在调用http://cloud.example.de 时,我被重定向到https://cloud.example.de,很好。但是当我调用http://www.example.de 时,我也被重定向到https://www.example.de,这会将我带到 cloud.example.com 的内容,因为这是唯一设置为的服务器名称由端口 443 使用
。 www 子域的访问日志中没有条目。
还有另一个指向 phpPgAdmin 的子域。我可以正常访问它,它不会被重写。
server {
listen 80;
server_name pgsql.example.de;
root /home/user/web/phppgadmin;
#etc
}
Run Code Online (Sandbox Code Playgroud)
有什么不见了?仅当服务器名称匹配 cloud.example.de 时才应进行重写。
服务器条目的顺序是否相关或无关紧要?
在 …
当我们将 Domino 开发服务器从 8.5.3 升级到 9 时,从 Java 代码到具有GoDaddy证书的站点的 HTTPS 连接停止工作。与具有DigiCert证书的服务器的连接工作正常。这发生在代理和 XPage 中。
这是一个 XPage 示例代码:
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
<xp:this.beforePageLoad>
<![CDATA[#{javascript:new java.net.URL("https://www.sslshopper.com/").openStream();]]>
</xp:this.beforePageLoad>
</xp:view>
Run Code Online (Sandbox Code Playgroud)
我也试过UrlConnection。这是例外:
javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: 3659
com.ibm.jsse2.o.a(o.java:15)
com.ibm.jsse2.SSLSocketImpl.a(SSLSocketImpl.java:460)
com.ibm.jsse2.kb.a(kb.java:294)
com.ibm.jsse2.kb.a(kb.java:533)
com.ibm.jsse2.lb.a(lb.java:55)
com.ibm.jsse2.lb.a(lb.java:581)
com.ibm.jsse2.kb.s(kb.java:11)
com.ibm.jsse2.kb.a(kb.java:394)
com.ibm.jsse2.SSLSocketImpl.a(SSLSocketImpl.java:44)
com.ibm.jsse2.SSLSocketImpl.h(SSLSocketImpl.java:496)
com.ibm.jsse2.SSLSocketImpl.a(SSLSocketImpl.java:528)
com.ibm.jsse2.SSLSocketImpl.startHandshake(SSLSocketImpl.java:505)
com.ibm.net.ssl.www2.protocol.https.c.afterConnect(c.java:83)
com.ibm.net.ssl.www2.protocol.https.d.connect(d.java:31)
sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1184)
com.ibm.net.ssl.www2.protocol.https.b.getInputStream(b.java:40)
java.net.URL.openStream(URL.java:1022)
Run Code Online (Sandbox Code Playgroud)
...
java.security.cert.CertificateException: 3659
com.ibm.domino.napi.ssl.DominoX509TrustManager.checkServerTrusted(DominoX509TrustManager.java:98)
com.ibm.jsse2.lb.a(lb.java:468)
com.ibm.jsse2.lb.a(lb.java:581)
com.ibm.jsse2.kb.s(kb.java:11)
com.ibm.jsse2.kb.a(kb.java:394)
com.ibm.jsse2.SSLSocketImpl.a(SSLSocketImpl.java:44)
com.ibm.jsse2.SSLSocketImpl.h(SSLSocketImpl.java:496)
com.ibm.jsse2.SSLSocketImpl.a(SSLSocketImpl.java:528)
com.ibm.jsse2.SSLSocketImpl.startHandshake(SSLSocketImpl.java:505)
com.ibm.net.ssl.www2.protocol.https.c.afterConnect(c.java:83)
com.ibm.net.ssl.www2.protocol.https.d.connect(d.java:31)
sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1184)
com.ibm.net.ssl.www2.protocol.https.b.getInputStream(b.java:40)
java.net.URL.openStream(URL.java:1022)
Run Code Online (Sandbox Code Playgroud)
我根据以下说明将 GoDaddy 证书导入到 domino_path\jvm\lib\security\cacerts 密钥库:
http://drcs.ca/blog/adding-godaddy-intermediate-certificates-to-java-jdk/
但这并没有帮助,我还导入了gd-class2-root.crt 却没有结果。我还尝试重命名 …
我在 Debian 6 上运行的生产服务器出现问题(apt-get update;apt-get upgrade 成功完成)。
当我调用 HTTPS (StartSSL) 服务器时,我在 Debian 6 上收到一条错误消息:
#> curl --version
curl 7.21.0 (x86_64-pc-linux-gnu) libcurl/7.21.0 OpenSSL/0.9.8o zlib/1.2.3.4 libidn/1.15 libssh2/1.2.6
Protocols: dict file ftp ftps http https imap imaps ldap ldaps pop3 pop3s rtsp scp sftp smtp smtps telnet tftp
Features: GSS-Negotiate IDN IPv6 Largefile NTLM SSL libz
#> curl https://mydomain.com/api/
curl: (60) SSL certificate problem, verify that the CA cert is OK. Details:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
More details here: http://curl.haxx.se/docs/sslcerts.html
Run Code Online (Sandbox Code Playgroud)
但是当我在 Debian 7 …
我最近安装了 monit(在 debian 上)并且一切正常。现在我想启用 ssl 支持。我做了我在文档中找到的内容:
set httpd port 2812
ssl enable
pemfile /etc/ssl/certs/ssl-cert-snakeoil.pem
Run Code Online (Sandbox Code Playgroud)
现在,我不仅无法使用https://myserver.com:2812通过 Web 访问服务器,而且 monit 守护程序和 monit 命令之间的通信也失败了:
$# monit status
monit: Openssl read timeout error!
monit: error connecting to the monit daemon
Run Code Online (Sandbox Code Playgroud) 我有一个通配符证书*.example.com(由 GeoTrust 签名),并将在不同的服务器上托管大量应用程序实例,每个实例都在我的子域上。
我不愿意将我的 OpenSSL 私钥复制给每个客户。如何使用我的证书为各个子域创建子证书而不共享我的证书?
https ×10
ssl ×4
apache-2.2 ×2
curl ×2
debian ×2
http ×2
ubuntu ×2
ibm-domino ×1
java ×1
monit ×1
nginx ×1
openssl ×1
port ×1
port-443 ×1
privacy ×1
private-key ×1
proxy ×1
rewrite ×1
ubuntu-11.04 ×1