标签: ssl-certificate

nginx - 使用ssl-support设置多个server_name

我很乐意使用nginx来提供具有多个域名和SSL的网站:

  • webmail.example.com
  • webmail.beispiel.de

两者都使用相同的vhost,所以我只设置server_name两次.问题是,我需要nginx为每个域名提供正确的ssl证书.

这可能是一个虚拟主机还是我需要设置两个虚拟主机?

ssl nginx ssl-certificate vhosts

42
推荐指数
1
解决办法
7万
查看次数

Java keytool从url/port添加服务器证书的简便方法

我有一个带有自签名证书的服务器,但也需要客户端证书身份验证.我正在尝试获取原始CA服务器证书,因此我可以将其导入密钥库.任何人都有一些关于如何轻松做到这一点的建议?谢谢.

java keytool ssl-certificate

41
推荐指数
4
解决办法
9万
查看次数

svn验证服务器证书时出错

如果我使用任何svn与远程服务器通信的命令,我会收到以下错误:

Error validating server certificate for 'https://...':
 - The certificate is not issued by a trusted authority. Use the
   fingerprint to validate the certificate manually!
Certificate information:
 - Hostname: ...
 - Valid: from Wed, 01 Sep 2010 08:25:36 GMT until Thu, 06 Oct 2011 08:25:36 GMT
 - Issuer: ...
 - Fingerprint: ...
(R)eject, accept (t)emporarily or accept (p)ermanently? 
Run Code Online (Sandbox Code Playgroud)

如果我永久命中,我可以正确运行命令.但是在下一个svn命令中,我得到了同样的问题,必须再次确认!为什么不svn永久保存我的选择?我怎么解决这个问题?

谢谢你的帮助!

svn ssl-certificate

41
推荐指数
6
解决办法
8万
查看次数

PKIX路径构建失败:无法找到请求目标的有效证书路径

我正在调用以下客户端的一些HTTPS Web服务:

import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintStream;
import java.net.HttpURLConnection;
import java.net.URL;

import javax.net.ssl.HttpsURLConnection;

/**
 * Handles http and https connections. It sends XML request over http (or https)
 * to SOAP web service and receive the XML reply.
 * 
 * @author mhewedy
 * @date 30.10.2010
 */
public class HttpWSXmlClient
{
    private final String ws_url;
    private byte[] requestData;

    public HttpWSXmlClient(String wsUrl)
    {
        this.ws_url = wsUrl;
    }

    public void readRequest(String xmlRequestFilePath)
    {
        try
        {
            InputStream …
Run Code Online (Sandbox Code Playgroud)

java web-services certificate ssl-certificate

40
推荐指数
6
解决办法
9万
查看次数

如何使用客户端证书在Web API中进行身份验证和授权

我正在尝试使用客户端证书来使用Web API对设备进行身份验证和授权,并开发了一个简单的概念证明来解决潜在解决方案的问题.我遇到的问题是Web应用程序没有收到客户端证书.一些人报告了这个问题,包括在本问答中,但没有一个人有答案.我希望提供更多细节来重振这个问题,并希望得到我的问题的答案.我对其他解决方案持开放态度.主要要求是用C#编写的独立进程可以调用Web API并使用客户端证书进行身份验证.

此POC中的Web API非常简单,只返回单个值.它使用一个属性来验证是否使用了HTTPS以及是否存在客户端证书.

public class SecureController : ApiController
{
    [RequireHttps]
    public string Get(int id)
    {
        return "value";
    }

}
Run Code Online (Sandbox Code Playgroud)

以下是RequireHttpsAttribute的代码:

public class RequireHttpsAttribute : AuthorizationFilterAttribute 
{ 
    public override void OnAuthorization(HttpActionContext actionContext) 
    { 
        if (actionContext.Request.RequestUri.Scheme != Uri.UriSchemeHttps) 
        { 
            actionContext.Response = new HttpResponseMessage(System.Net.HttpStatusCode.Forbidden) 
            { 
                ReasonPhrase = "HTTPS Required" 
            }; 
        } 
        else 
        {
            var cert = actionContext.Request.GetClientCertificate();
            if (cert == null)
            {
                actionContext.Response = new HttpResponseMessage(System.Net.HttpStatusCode.Forbidden)
                {
                    ReasonPhrase = "Client Certificate Required"
                }; 

            }
            base.OnAuthorization(actionContext); 
        } 
    } 
}
Run Code Online (Sandbox Code Playgroud)

在这个POC中,我只是检查客户端证书的可用性.一旦这个工作,我可以添加证书中的信息检查,以验证证书列表. …

c# security client-certificates ssl-certificate asp.net-web-api

40
推荐指数
3
解决办法
8万
查看次数

由中间CA(链)签名的NGinx SSL证书认证

我试图在nginx中启用客户端证书身份验证,其中证书已由中间CA签名.使用由自签名根CA签名的证书时,我能够正常工作; 但是,当签名CA是中间CA时,这不起作用.

我的简单服务器部分如下所示:

server {
    listen       443;
    server_name  _;

    ssl                  on;
    ssl_certificate      cert.pem;
    ssl_certificate_key  cert.key;

    ssl_session_timeout  5m;

    ssl_protocols  SSLv2 SSLv3 TLSv1;
    ssl_ciphers  ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
    ssl_prefer_server_ciphers   on;

    ssl_client_certificate ca.pem;
    ssl_verify_client on;
    ssl_verify_depth 1;

    location / {
        root   html;
        index  index.html index.htm;
    }
}
Run Code Online (Sandbox Code Playgroud)

对于ca.pem的内容,我尝试过使用中间CA并连接中间CA证书和根CA证书,例如:

cp intermediate.crt ca.pem
cat root.crt >> ca.pem
Run Code Online (Sandbox Code Playgroud)

我还验证了在使用相同的CA链时,从openssl的角度来看证书是有效的:

openssl verify -CAfile /etc/nginx/ca.pem certs/client.crt 
certs/client.crt: OK
Run Code Online (Sandbox Code Playgroud)

我已经尝试将ssl_verify_depth显式设置为1(如上所述)然后甚至为0(不确定该数字的确切含义),但仍然会得到相同的错误.

我在中间CA的所有变体中得到的错误是"400 Bad Request",更具体地说是"SSL证书错误"(不确定这意味着什么).

也许nginx只是不支持中间证书的证书链?任何帮助非常感谢!

authentication ssl nginx ssl-certificate

39
推荐指数
2
解决办法
5万
查看次数

来自Socket.io的s3_pkt.c中的HTTPS错误"数据长度太长"

我们试图让Socket.io flashsockets通过HTTPS/WSS在Internet Explorer 9中运行.flashsockets通过HTTP工作,但HTTPS给我们带来了麻烦.我们使用的是socket.io版本0.8.7和socket.io-client版本0.9.1-1.

我们在端口443上通过SSL运行我们的websocket服务器.我们在正确的位置指定了我们的WebsocketMainInsecure.swf文件的位置(这些是跨域ws请求),我们正在swfobject嵌入中加载文件通过HTTPS.

我们在我们的安全组中为我们的EC2实例打开了端口843,并且通过HTTP成功呈现了交叉源策略文件.它似乎不通过HTTPS呈现(Chrome引发SSL连接错误).

我们尝试了两个版本的WebsocketMainInsecure.swf文件.第一个是Socket.io提供的文件,它是由WebsocketMainInsecure.as构建的,不包括该行

Security.allowInsecureDomain("*");
Run Code Online (Sandbox Code Playgroud)

这会在行SCRIPT16389: Unspecified error.处引发错误WebSocket.__flash.setCallerUrl(location.href).

我们认为这是因为SWF文件不允许HTTPS请求,因此我们将WebSocketMainInsecure.swf文件替换为此repo上的文件:https://github.com/gimite/web-socket-js,因为它包括

Security.allowInsecureDomain("*");
Run Code Online (Sandbox Code Playgroud)

动作脚本代码中的行.当我们使用它时,我们看到flashsocket连接在无限循环中保持断开连接和重新连接.我们在Transport原型的onSocketError函数中将错误跟踪到socket.io库中的transport.js文件.它抛出错误:

[Error: 139662382290912:error:1408F092:SSL routines:SSL3_GET_RECORD:data length too long:s3_pkt.c:503:]
Run Code Online (Sandbox Code Playgroud)

我们甚至尝试将socket.io和socket.io-client更新到版本0.9.6,我们仍然遇到Access is denied错误.

这个错误很难调试,现在我们不知道如何让flashsockets工作.我们想知道它是否可能与使用旧版本的socket.io有关,或者可能是我们的策略文件服务器不接受HTTPS请求,或者甚至可能是来自Web的WebSocketMainInsecure.swf文件的方式 - socket-js github repo是相对于socket.io-client所期望的而构建的.

ssl https ssl-certificate node.js socket.io

39
推荐指数
1
解决办法
1871
查看次数

openssl s_client -cert:证明客户端证书已发送到服务器

背景

我陷入与服务提供商的指责匹配,其服务提供商具有受SSL服务器和客户端证书保护的API .

  • 我已经生成了CSR,从公共CA(本例中为GoDaddy)获得了证书,并将证书和CA链提供给服务提供商.
  • 他们应该将CA和我的客户端证书加载到他们的网关中.
  • 我正在使用最基本的级别测试 openssl s_client -connect ... -cert ... -key ...
  • 提供商告诉我他们的日志表明我的请求根本不包括客户端SSL证书.
  • 奇怪的是,我的证书的正确CA颁发者确实出现在SSL握手期间提供的"可接受的客户端证书CA名称"列表中.
  • 作为参考,我创建并提供给他们进行测试的自签名证书确实可以正常工作.

样本(失败)请求

[shell ~]$ openssl s_client -connect host:443 -cert cert_and_key.pem -key cert_and_key.pem -state -quiet
CONNECTED(00000003)
SSL_connect:before/connect initialization
SSL_connect:SSLv2/v3 write client hello A
SSL_connect:SSLv3 read server hello A
depth=2 **SNIP**
verify return:1
depth=1 **SNIP**
verify return:1
depth=0 **SNIP**
verify return:1
SSL_connect:SSLv3 read server certificate A
SSL_connect:SSLv3 read server key exchange A
SSL_connect:SSLv3 read server certificate request A
SSL_connect:SSLv3 read server done A
SSL_connect:SSLv3 …
Run Code Online (Sandbox Code Playgroud)

ssl openssl ssl-certificate

39
推荐指数
2
解决办法
18万
查看次数

如何修复stream_socket_enable_crypto():SSL操作失败,代码为1

stream_socket_enable_crypto(): SSL operation failed with code 1. 
OpenSSL Error messages: error:14090086:SSL 
routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
Run Code Online (Sandbox Code Playgroud)

我使用的是Laravel 4.2,PHP 5.6,Apache 2.4

我在Amazon ec2 Linux中安装了GoDaddy SSL.

当我使用https访问该网站时,SSL工作正常.

我调用我的函数时发生错误:

<?php

public function sendEmail() 
{
        \Mail::send ( 'emails.code.code', $data, function ($sendemail) use($email) {
            $sendemail->from ( 'info@me.com', 'Me Team' );
            $sendemail->to ( $email, '' )->subject ( 'Activate your account' );
        } );

}
?>
Run Code Online (Sandbox Code Playgroud)

我读了一些关于这个的文章,他们说有些东西我们应该做一些改变,他们把那些代码但是我不知道在哪里插入它.

读过这篇文章:https://www.mimar.rs/en/sysadmin/2015/php-5-6-x-ssltls-peer-certificates-and-hostnames-verified-by-default/

http://php.net/manual/en/migration56.openssl.php这个文档很难理解.

所以我的问题是如何解决这个问题?

amazon-ec2 ssl-certificate laravel-4 apache2.4 php-5.6

39
推荐指数
8
解决办法
10万
查看次数

带有SSL的Apache名称虚拟主机

我正在尝试设置我们的服务器以允许通过SSL进行流量.我知道SSL不适用于Name Virtual Host,但是我们在具有专用私有IP的虚拟机上拥有所有apache服务器.我们有一个主虚拟机,它具有mod_proxy设置,可以将流量路由到适当的vms.

但是,为了路由https流量,我们需要在代理和vms上安装证书.我们有一个可以在所有主机上使用的通配符证书.一切似乎都正常工作,但我在代理的apache日志中收到以下内容:

[警告]初始化:SSL服务器IP /端口冲突:host1.domain.com:443(/ etc/apache2/sites-enabled/host1:1)与host2.domain.com:443(/ etc/apache2/sites-启用/主机2:1)

我们在代理上设置的每个主机都有一条错误消息.我们的代理虚拟主机设置如下:

<VirtualHost ipaddress:443>
    ServerName host1.domain.com
    ProxyPreserveHost On
    ProxyRequests Off
    ProxyPass / https://privateip:443/
    ProxyPassReverse / https://privateip:443/

    SSLProxyEngine on
    SSLEngine on
    SSLCertificateFile /etc/ssl/certs/server.crt
    SSLCertificateKeyFile /etc/ssl/private/server.key
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

有什么方法可以让这个工作吗?

apache ssl ssl-certificate

38
推荐指数
2
解决办法
10万
查看次数