AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题

问题[tls](server)

Martin Hope
WoJ
Asked: 2016-11-01 01:38:12 +0800 CST

是否可以自动提供客户端证书?

  • 0

在实现客户端 TLS 证书时,浏览器总是会弹出一个包含可用(和可能合适的?)证书的弹出窗口。

服务器有没有办法请求浏览器立即提供的特定证书而不通过弹出窗口?

关于客户端身份验证的 Wikipedia文章描述了事务图,但没有太多细节:

服务器向客户端请求证书,以便可以使用 CertificateRequest 消息对连接进行相互验证。

ssl ssl-certificate client-server tls
  • 1 个回答
  • 112 Views
Martin Hope
Dominic P
Asked: 2016-10-22 15:30:48 +0800 CST

让 PJSIP 与 TLS 一起使用 FreePBX 上的 Twilio SIP Trunking

  • 2

我想知道是否有人可以帮助我调试我遇到的这个问题。我正在尝试使用 PJSIP 堆栈在我的 FreePBX 服务器和 Twilio 之间进行安全中继设置。

未加密的中继在 UDP 上运行良好。但是,当我尝试启用 TLS/SRTP 时,我似乎无法让它工作。一旦我将主干更新为使用 5061 和 TLS 传输,我就会在 Asterisk 日志中得到以下信息。

WARNING[5268] pjproject: tsx0x27c4cd8 .Failed to send Request msg OPTIONS/cseq=28056 (tdta0x26d3af0)! err=171064 (Unsuitable transport selected (PJSIP_ETPNOTSUITABLE))
ERROR[5268] res_pjsip.c: Error 171064 'Unsuitable transport selected (PJSIP_ETPNOTSUITABLE)' sending OPTIONS request to endpoint Twilio

我认为问题可能是 PJSIP 不支持通配符 SSL 证书,而 Twilio 使用的是通配符,但我不确定如何确定。关于如何调试它的任何想法都会非常有帮助。

更新:我直接在星号配置文件中调整了一些 URI,现在我已经克服了不合适的传输错误。新的错误正如我所担心的那样:

ERROR[524] pjproject: RFC 5922 (section 7.2) does not allow TLS wildcard certificates. Advise your SIP provider, please!

关于如何解决这个问题的任何想法?

sip freepbx tls
  • 1 个回答
  • 2255 Views
Martin Hope
Reapbooster
Asked: 2016-10-15 17:46:49 +0800 CST

LDAPS 握手失败 errno 21 是目录 - 遇到文件结尾

  • 1

我已经设置了一个CentOS 7 openLDAP passthrough 身份验证服务器。

它将通过 LDAP 在 Microsoft Active Directory 上托管的数据库上对用户进行身份验证。

如果我使用 LDAP://,我可以获得成功的查询响应

但是,LDAPS:// 会给出证书握手错误。

我正在使用从 GoDaddy 购买的 PFX 格式的证书。

我找到了一些可能的解决方案,但到目前为止没有任何效果。

我努力了:

  1. 禁用 SELinux 进行测试
  2. 将 PFX 证书转换为 PEM 和 DER
  3. 使用此处解释的 certutil 来制作 MozNSS DB: http ://www.openldap.org/faq/data/cache/1514.html

    pk12util -d /path/to/certdb -i /path/to/file.p12

我找到了这个页面https://stackoverflow.com/questions/13732826/convert-pem-to-crt-and-key 但我不知道使用什么命令来获取 openLDAP 的正确格式证书。

我试过这些:

openssl x509 -outform der -in certificate.pem -out certificate.der
openssl x509 -outform der -in certificate.pem -out certificate.crt

当我运行 ldapsearch 时:

ldapsearch -H ldaps://192.168.1.69 -b "OU=Administration,DC=domain,DC=com" -v -LLL -D "CN=ServiceLDAP,OU=Administration,DC=domain,DC=com" "(samaccountname=someuser)" -w secretpass -d1

这些是我得到的错误:

ldap_url_parse_ext(ldaps://192.168.1.32)
ldap_initialize( ldaps://192.168.1.32:636/??base )
ldap_create
ldap_url_parse_ext(ldaps://192.168.1.32:636/??base)
ldap_sasl_bind
ldap_send_initial_request
ldap_new_connection 1 1 0
ldap_int_open_connection
ldap_connect_to_host: TCP 192.168.1.32:636
ldap_new_socket: 4
ldap_prepare_socket: 4
ldap_connect_to_host: Trying 192.168.1.32:636
ldap_pvt_connect: fd: 4 tm: -1 async: 0
attempting to connect:
connect success
TLS: certdb config: configDir='/etc/openldap/certs' tokenDescription='ldap(0)' certPrefix='' keyPrefix='' flags=readOnly
TLS: using moznss security dir /etc/openldap/certs prefix .
TLS: error: tlsm_PR_Recv returned 0 - error 21:Is a directory
TLS: error: connect - force handshake failure: errno 21 - moznss error -5938
TLS: can't connect: TLS error -5938:Encountered end of file.
ldap_err2string
ldap_sasl_bind(SIMPLE): Can't contact LDAP server (-1)
centos openldap tls
  • 1 个回答
  • 1842 Views
Martin Hope
Zombaya
Asked: 2016-10-07 23:22:02 +0800 CST

通过 tls 将日志从 rsyslog 转发到 graylog

  • 2

我正在尝试通过 tls 将日志从 rsyslog 转发到 graylog。

rsyslog 配置:

# make gtls driver the default
$DefaultNetstreamDriver gtls
#
# # certificate files
$DefaultNetstreamDriverCAFile /etc/ssl/rsyslog/ca.pem
$DefaultNetstreamDriverCertFile /etc/ssl/rsyslog/rsyslog-cert.pem
$DefaultNetstreamDriverKeyFile /etc/ssl/rsyslog/rsyslog-key.pem
#
$ActionSendStreamDriverAuthMode x509/name
$ActionSendStreamDriverPermittedPeer graylog.mydomain.com
$ActionSendStreamDriverMode 1 # run driver in TLS-only mode
*.* @@graylog.mydomain.com:6514 # forward everything to remote server

我生成了 rsyslog 文档中描述的必要证书:

certtool --pkcs8 --generate-privkey --outfile ca-key.pem
certtool --pkcs8 --generate-self-signed --load-privkey ca-key.pem --outfile ca.pem

certtool --pkcs8 --generate-privkey --outfile graylog.key.pem 
certtool --pkcs8 --generate-request --load-privkey graylog.key.pem --outfile graylog.request.pem
certtool --pkcs8 --generate-certificate --load-request graylog.request.pem --outfile graylog.cert.pem --load-ca-certificate ca.pem --load-ca-privkey ca-key.pem

certtool --pkcs8 --generate-privkey --outfile rsyslog.key.pem 
certtool --pkcs8 --generate-request --load-privkey rsyslog.key.pem --outfile rsyslog.request.pem
certtool --pkcs8 --generate-certificate --load-request rsyslog.request.pem --outfile rsyslog.cert.pem --load-ca-certificate ca.pem --load-ca-privkey ca-key.pem

灰色日志配置

所有证书文件都在 /etc/ssl/graylog/input-ca/

graylog 输入配置如下:

TLS cert file: /etc/ssl/graylog/input-ca/graylog-cert.pem
TLS private key file: /etc/ssl/graylog/input-ca/graylog-key.pem
TLS Client Auth Trusted Certs: /etc/ssl/graylog/input-ca

但是当 rsyslog 将日志消息推送到 garylog 时,我收到此错误:

2016-10-06T13:19:27.734+02:00 WARN  [AbstractNioSelector] Failed to initialize an accepted socket.
java.security.cert.CertificateParsingException: signed fields invalid
    at sun.security.x509.X509CertImpl.parse(X509CertImpl.java:1791) ~[?:1.8.0_91]
    at sun.security.x509.X509CertImpl.<init>(X509CertImpl.java:195) ~[?:1.8.0_91]
    at sun.security.provider.X509Factory.parseX509orPKCS7Cert(X509Factory.java:469) ~[?:1.8.0_91]
    at sun.security.provider.X509Factory.engineGenerateCertificates(X509Factory.java:354) ~[?:1.8.0_91]
    at java.security.cert.CertificateFactory.generateCertificates(CertificateFactory.java:462) ~[?:1.8.0_91]
    at org.graylog2.plugin.inputs.transports.util.KeyUtil.loadCertificates(KeyUtil.java:90) ~[graylog.jar:?]
    at org.graylog2.plugin.inputs.transports.util.KeyUtil.loadCertificates(KeyUtil.java:100) ~[graylog.jar:?]
    at org.graylog2.plugin.inputs.transports.util.KeyUtil.initTrustStore(KeyUtil.java:73) ~[graylog.jar:?]
    at org.graylog2.plugin.inputs.transports.AbstractTcpTransport$1.createSslEngine(AbstractTcpTransport.java:199) ~[graylog.jar:?]
    at org.graylog2.plugin.inputs.transports.AbstractTcpTransport$1.call(AbstractTcpTransport.java:186) ~[graylog.jar:?]
    at org.graylog2.plugin.inputs.transports.AbstractTcpTransport$1.call(AbstractTcpTransport.java:182) ~[graylog.jar:?]
    at org.graylog2.plugin.inputs.transports.NettyTransport$1.getPipeline(NettyTransport.java:110) ~[graylog.jar:?]
    at org.jboss.netty.channel.socket.nio.NioServerBoss.registerAcceptedChannel(NioServerBoss.java:134) [graylog.jar:?]
    at org.jboss.netty.channel.socket.nio.NioServerBoss.process(NioServerBoss.java:104) [graylog.jar:?]
    at org.jboss.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:337) [graylog.jar:?]
    at org.jboss.netty.channel.socket.nio.NioServerBoss.run(NioServerBoss.java:42) [graylog.jar:?]
    at org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108) [graylog.jar:?]
    at org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42) [graylog.jar:?]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [?:1.8.0_91]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [?:1.8.0_91]
    at java.lang.Thread.run(Thread.java:745) [?:1.8.0_91]

任何想法可能是什么问题?

centos7 rsyslog x509 graylog tls
  • 3 个回答
  • 2963 Views
Martin Hope
alanj
Asked: 2016-09-23 08:14:53 +0800 CST

防止网站被非预期域名访问

  • 0

我在 Debian 上有一个具有多个域的 nginx 服务器。它们都存在于 html 文件夹中。然后 A 记录指向我的服务器,您可以/var/www/html/mywebsite.biz通过转到https://mywebsite.biz来访问其中的文件。我还使用 Let's Encrypt 为他们分配了 TLS 证书。

它看起来像这样:

└── html
    ├── mywebsite.biz
    ├── anotherwebsite.net
    ├── example-three.com
    └── somewebsite.ca

但是,您可以html通过我的 ip 地址访问没有 TLS 的文件夹,如下所示:

http://216.58.216.78/mywebsite.biz

但我也有一些我希望这种情况发生的情况。例如,如果我想在将域指向我的服务器之前建立一个测试站点。为此,我使用 noip.com 为其分配了一个友好的名称,如下所示:

http://myservername.ddns.net/somewebsite.ca(只是一个测试站点)

仅通过某些站点的 ip 地址/友好名称拒绝访问的最佳方法是什么?

拒绝/重定向这些:

http://myservername.ddns.net/mywebsite.biz

http://216.58.216.78/mywebsite.biz

允许这样做:

http://myservername.ddns.net/somewebsite.ca

我的猜测是将它们重定向到那里,但我对 nginx 有点陌生,想确保这是最好的方法。

redirect nginx tls
  • 2 个回答
  • 110 Views
Martin Hope
allo
Asked: 2016-09-20 21:33:16 +0800 CST

在邮件服务器上检查哪个 DNS 名称的 TLS?

  • 0

假设我有这些记录:

  • 一个mail.somedomain:127.0.0.1
  • 一个mail.mailserverdomain:127.0.0.1
  • MX somedomain:mail.somedomain

MTA 连接mail.somedomain以传递邮件somedomain并获得证书以供mail.mailserverdomain提交,MTA 将其主机名显示mail.mailserverdomain为HELO.

这是一个有效的 TLS 会话还是意味着一个错误主机名的证书(期望somedomain或reverse.somedomain)?

domain-name-system email spam tls fcrdns
  • 1 个回答
  • 50 Views
Martin Hope
Dennis Schürholz
Asked: 2016-09-20 08:13:02 +0800 CST

LetsEncrypt 证书更新从 dns 切换到 http

  • 1

我最近从 dns-01 切换到 http-01 callenge 类型的letsencrypt,因为我计划将来签署我的dns区域,因此不再需要自动区域操作。自从我做出此更改后,我无法再更新我的一些区域(我假设这些区域是我最初通过 dns-challenge 签署的区域)。我的旧区域(从第一次使用开始 - 从一开始就使用 http)工作正常。

只是为了澄清问题,我正在使用lukas2511 的脱水客户端。我添加了一些调试输出来检查该脚本中是否存在问题 - 似乎没有。
请求挑战后,我收到回复:

{
  "identifier":{
    "type":"dns",
    "value":"dennisschuerholz.de"
  },
  "status":"valid",
  "expires":"2017-04-16T11:43:43Z",
  "challenges":[
    {
      "type":"http-01",
      "status":"pending",
      "uri":"https://acme-v01.api.letsencrypt.org/acme/challenge/<some foo>/133324572",
      "token":"<some token>"
    },
    {
      "type":"tls-sni-01",
      "status":"pending",
      "uri":"https://acme-v01.api.letsencrypt.org/acme/challenge/<some foo>/133324573",
      "token":"<some token>"
    },
    {
      "type":"dns-01",
      "status":"valid",
      "uri":"https://acme-v01.api.letsencrypt.org/acme/challenge/<some foo>/133324574",
      "token":"<some token>",
      "keyAuthorization":"<some bar>",
      "validationRecord":[
        {
          "Authorities":[
            "dennisschuerholz.de.\t900\tIN\tNS\tns3.schuerholz.it.",
            "dennisschuerholz.de.\t900\tIN\tNS\tns1.schuerholz.it.",
            "dennisschuerholz.de.\t900\tIN\tNS\tns2.schuerholz.it.",
            "dennisschuerholz.de.\t900\tIN\tNS\tns.schuerholz.it."
          ],
          "hostname":"dennisschuerholz.de",
          "port":"",
          "addressesResolved":null,
          "addressUsed":""
        }
      ]
    }
  ],
  "combinations":[[0],[2],[1]]
}

我真的不明白为什么 dns 挑战类型仍然包含有关域的(过时的)信息,以及“过期”键是否与此有关。

如果我现在尝试回应挑战,状态将永远保持在等待状态。

{
  "type":"http-01",
  "status":"pending",
  "uri":"https://acme-v01.api.letsencrypt.org/acme/challenge/<some foo>/133324572",
  "token":"<some token>"
}

似乎我坚持使用 dns 挑战类型,并且想知道为什么以及如何恢复它(如果可能的话)。我只是在暂存路径 ( https://acme-staging.api.letsencrypt.org/directory) 上使用了相同的脚本和域,效果很好。

domain-name-system https lets-encrypt automated tls
  • 1 个回答
  • 617 Views
Martin Hope
doublep
Asked: 2016-08-31 02:59:01 +0800 CST

SSL 握手:服务器是否应该选择较早的协议?

  • 2

我们必须使用 HTTPS 将我们的应用程序(用 Java 8 编写)连接到一些非常旧的服务器。作为 Java 8,我们的客户端支持 TLSv1.2、TLSv1.1、TLSv1 和 SSLv3。当然,它更喜欢使用 TLSv1.2,因为它是最新的协议。

但是,服务器 (Oracle-HTTP-Server 11.1.1.7) 仅支持 TLSv1 和 SSLx。此外,它支持的密码套件选择非常有限,但仍有一个共同的套件可以与 TLSv1 一起使用:SSL_RSA_WITH_3DES_EDE_CBC_SHA(又名 TLS_RSA_WITH_3DES_EDE_CBC_SHA)。

但是,直接连接会因服务器终止握手而失败。我们得到的调试输出(在客户端)如下所示:

main, WRITE: TLSv1.2 Handshake, length = 265
main, READ: TLSv1 Alert, length = 2
main, RECV TLSv1.2 ALERT:  fatal, close_notify
main, called closeSocket()
main, handling exception: javax.net.ssl.SSLException: Received fatal alert: close_notify

对我来说,看起来服务器甚至没有尝试回退到 TLSv1:一旦客户端声明 TLSv1.2 为首选,服务器就会退出。

相比之下,当我们在客户端中明确禁用 TLSv1.2 和 TLSv1.1,从而使 TLSv1 成为首选选项时,握手成功。

我们还尝试连接到另一个不知道 TLSv1.2 和 TLSv1.1 的旧服务器,但这里的连接按预期工作:即使客户端说它更喜欢 TLSv1.2,他们同意服务器使用 TLSv1,作为最佳通用协议:

main, WRITE: TLSv1.2 Handshake, length = 269
main, READ: TLSv1 Handshake, length = 85
...

问题:服务器是否有责任从客户端支持的 TLS/SSL 协议列表中进行选择?我可以对服务器维护人员说行为不端的是服务器,而不是我们的客户端吗?

ssl legacy tls
  • 1 个回答
  • 3053 Views
Martin Hope
Chazy Chaz
Asked: 2016-08-22 12:35:12 +0800 CST

https://domain.com ssl 错误,除非添加异常,否则它不会重定向到 www

  • 0

我使用 certbot 为我的域创建了一个让我们加密证书。我确保包含 www 和一些(需要的)子域,因此证书应该对非 www 和 www 有效:

domain.com www.domain.com sub1.domain.com ...

但事实并非如此,如果我尝试访问https://domain.com会引发 ssl 错误。

在证书查看器中(通过 www 访问时)我可以看到 Common Name (CA) domain.com。证书主题替代名称包含非 www 和 www...

所以我不明白为什么它会给出这个错误:

domain.com uses an invalid security certificate.
The certificate is not trusted because it is self-signed.
Error code: SEC_ERROR_UNKNOWN_ISSUER

我确实生成了一个自签名证书,但是对于默认的虚拟主机块(httpd-ssl.conf 中的那个),其他块正在使用让我们加密证书。

我还确保删除了 Firefox 缓存。

我确实添加了一个异常,现在每次我写https://domain.com时它都会重定向到https://www.domain.com。

我使用的是 Apache 2.4.23,我的虚拟主机配置如下:

<VirtualHosts *:80>
    Servername domain.com
    Redirect permanent / https://www.domain.com/
</VirtualHosts>

<VirtualHost *:443>
    ServerName domain.com:443
    Redirect permanent / https://www.domain.com:443/
</VirtualHost>

<VirtualHost *:PORT> # 80 and 443
    ServerAdmin [email protected]
    DocumentRoot "/srv/http/domain.com/www"
    ServerName www.domain.com:443
    Protocols h2 h2c

    <Directory "/srv/http/domain.com/www">
        Require all granted

        <IfModule mod_rewrite.c>
            RewriteEngine On
            RewriteBase /
            RewriteCond %{REQUEST_FILENAME} !-d
            RewriteCond %{REQUEST_FILENAME} !-f
            RewriteRule ^index\.php$ - [L]
            RewriteRule . index.php [L]
        </IfModule>
    </Directory>

    <IfModule dir_module>
        DirectoryIndex index.php
    </IfModule>

    SSLEngine on
    SSLCertificateFile "/etc/letsencrypt/live/domain.com/fullchain.pem"
    SSLCertificateKeyFile "/etc/letsencrypt/live/domain.com/privkey.pem"
    Header always set Strict-Transport-Security "max-age=15768000"
    ErrorLog "/var/log/httpd/domain.com-ssl_error_log"
    CustomLog "/var/log/httpd/domain.com-ssl_access_log" common
    LogLevel debug
</VirtualHost>
virtualhost ssl https apache-2.4 tls
  • 1 个回答
  • 1034 Views
Martin Hope
Jeremey
Asked: 2016-08-10 09:15:19 +0800 CST

如何在监控中禁用 TLSV1.0?

  • 0

为了符合 PCI 标准,我需要在我的 monit 安装中禁用 TLSV1.0,并且我需要启用 SSL 以便在我的 IspConfig 安装中查看它。我试过明确设置这样的版本:

set ssl {
    verify: enable,
    version: tlsv12
}

但如果我仍然

nmap --script ssl-enum-ciphers -p 2812 mywebserver.com

我得到了 TLSv1.0 的密码。

我在 Debian Jessie 上使用 Monit 5.18 版。

monit tls
  • 1 个回答
  • 262 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve