Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
未签名SSL证书和本地证书存在严重问题_Ssl_Curl_Https_Homebrew_Macos High Sierra - Fatal编程技术网

未签名SSL证书和本地证书存在严重问题

未签名SSL证书和本地证书存在严重问题,ssl,curl,https,homebrew,macos-high-sierra,Ssl,Curl,Https,Homebrew,Macos High Sierra,对于几个OSX版本,我一直使用它来设置本地开发环境,包括SSL 我还始终能够基于以下文件夹结构创建动态虚拟主机: # Auto-VirtualHosts with .dev <VirtualHost *:8080> ServerName dev ServerAlias *.dev CustomLog "/Users/username/Sites/logs/dev-access_log" combinedmassvhost ErrorLog "/Users/usern

对于几个OSX版本,我一直使用它来设置本地开发环境,包括SSL

我还始终能够基于以下文件夹结构创建动态虚拟主机:

# Auto-VirtualHosts with .dev
<VirtualHost *:8080>
  ServerName dev
  ServerAlias *.dev

  CustomLog "/Users/username/Sites/logs/dev-access_log" combinedmassvhost
  ErrorLog "/Users/username/Sites/logs/dev-error_log"

  VirtualDocumentRoot /Users/username/Sites/%-2+
</VirtualHost>
<VirtualHost *:8443>
  ServerName dev
  ServerAlias *.dev
  Include "/Users/username/Sites/ssl/ssl-shared-cert.inc"

  CustomLog "/Users/username/Sites/logs/dev-access_log" combinedmassvhost
  ErrorLog "/Users/username/Sites/logs/dev-error_log"

  VirtualDocumentRoot /Users/username/Sites/%-2+
</VirtualHost>
SSLEngine On
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW
SSLCertificateFile "/usr/local/etc/httpd/server.crt"
SSLCertificateKeyFile "/usr/local/etc/httpd/server.key"
要生成该证书,我运行以下代码:

$ cd /usr/local/etc/httpd
$ openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout server.key -out server.crt
在当地,这对我来说一直都很好。我可以成功地运行
curl
,尤其是在WordPress开发中,我可以运行
cron
任务,这些任务可能使用
curl

升级到High Sierra后,WordPress中出现以下错误:

在您的站点上生成对WP Cron系统的调用时出现问题。这意味着您站点上的WP Cron事件可能无法工作。问题是: cURL错误60:SSL证书问题:自签名证书

在命令行上,当我对本地HTTPS URL运行
curl
时,我会遇到以下错误:

curl:(60)SSL证书问题:自签名证书 详情如下:

curl无法验证服务器的合法性,因此无法 建立到它的安全连接。要了解更多有关此情况的信息,请执行以下操作: 如何修复,请访问上述网页


我已经尝试重新安装了初始教程中的所有项目,但到目前为止没有任何帮助。我还尝试从自制版本而不是内置版本安装
curl
,但这似乎没有任何效果。High Sierra是否有什么已知的东西会让它更挑剔?如果是这样,我可以做些什么来绕过本地开发吗?

您必须将自签名证书添加到curl CA证书存储中

首先,您必须通过运行存储在中的perl脚本来生成ca包:

/usr/local/Cellar/curl/7.56.1/libexec/mk-ca-bundle.pl
编辑生成的文件:

/usr/local/Cellar/curl/7.56.1/libexec/ca-bundle.crt
并使用相同的语法添加自签名证书

您可以通过以下方式获得证书:

openssl s_client -showcerts -connect my.server.com:443
从以下位置复制所有内容:

-----BEGIN CERTIFICATE-----

包括
开始
结束
行。 然后创建一个文件
~/.curlrc
,其中包含:

cacert /usr/local/Cellar/curl/7.56.1/libexec/ca-bundle.crt

我以前曾尝试将其添加到系统下的OSX密钥链访问工具中,并为其授予“始终信任”权限。这似乎是怎么回事?它似乎没有改变任何东西。哪个curl的输出是什么?
/usr/local/bin/curl
我找到了一个在macOS 10.13.1上测试过的解决方案。它也应该适用于你的环境。我相信我已经做到了。当我运行
curl时https://myurl.dev
它返回此消息,这是我以前从未见过的:curl:(77)设置证书验证位置时出错:CAfile:/usr/local/ceral/curl/7.56.1/libexec/ca-bundle.crt CApath:/usr/local/etc/openssl/certstack Overflow是一个用于编程和开发问题的站点。这个问题似乎离题了,因为它与编程或开发无关。请参见帮助中心中的。也许或者会是一个更好的提问地点。
CN=www.example.com
可能是错误的。主机名总是在SAN中。如果它存在于CN中,那么它也必须存在于SAN中(在这种情况下,您必须列出它两次)。有关更多规则和原因,请参阅,您还需要将自签名证书放入相应的信任存储。@jww这当然是关于设置本地开发环境的,所以我认为在这里可以。虽然我不记得输入了CN=www.example.com,但让我困惑的是,对于本地开发来说,它在以前的OSX版本上作为一个通用SSL总是工作得很好。这是否意味着High Sierra发生了变化?
cacert /usr/local/Cellar/curl/7.56.1/libexec/ca-bundle.crt