我正在使用XAMPP进行开发.最近我将xampp的安装从旧版本升级到1.7.3.
现在当我卷曲启用HTTPS的网站时,我得到以下异常
致命错误:未捕获的异常'RequestCore_Exception',消息'cURL resource:Resource id#55; cURL错误:SSL证书问题,验证CA证书是否正常.详细信息:错误:14090086:SSL例程:SSL3_GET_SERVER_CERTIFICATE:证书验证失败(60)'
每个人都建议使用PHP代码中的一些特定curl选项来解决这个问题.我认为这不应该是这样的.因为我的旧版XAMPP没有任何问题,只是在安装新版本后才发生.
我需要帮助来弄清楚我的PHP安装中哪些设置发生了变化,Apache等可以解决这个问题.
root@sclrdev:/home/sclr/certs/FreshCerts# curl --ftp-ssl --verbose ftp://{abc}/ -u trup:trup --cacert /etc/ssl/certs/ca-certificates.crt
* About to connect() to {abc} port 21 (#0)
* Trying {abc}...
* Connected to {abc} ({abc}) port 21 (#0)
< 220-Cerberus FTP Server - Home Edition
< 220-This is the UNLICENSED Home Edition and may be used for home, personal use only
< 220-Welcome to Cerberus FTP Server
< 220 Created by Cerberus, LLC
> AUTH SSL
< 234 Authentication method accepted
* successfully set certificate verify locations:
* CAfile: …Run Code Online (Sandbox Code Playgroud) 我在Windows 7上安装了OpenSSL x64,我是从Google Code上的openssl-for-windows下载的.我正试图跑:
openssl pkcs12 -export -in "path.p12" -out "newfile.pem"
Run Code Online (Sandbox Code Playgroud)
但是我收到了一个错误.
unable to load private key
Run Code Online (Sandbox Code Playgroud)
如何使用OpenSSL从PKCS#12商店中提取PEM中的证书?
我想从我的PKCS#12文件中提取公钥和私钥,以便以后在SSH-Public-Key-Authentication中使用.
现在,我通过ssh-keygen生成密钥,我将它放在.ssh/authorized_key中,分别位于客户端的某个地方.
将来,我想使用PKCS#12容器中的密钥,所以我首先从PKCS#12中提取公钥,然后将它们放入.ssh/authorized_keys文件中.有没有机会通过openssl实现这一点?PKCS#12中的密钥是否兼容ssh-public-key身份验证?
在我的搜索过程中,我找到了几种签署SSL证书签名请求的方法:
使用x509模块:
openssl x509 -req -days 360 -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt
Run Code Online (Sandbox Code Playgroud)使用ca模块:
openssl ca -cert ca.crt -keyfile ca.key -in server.csr -out server.crt
Run Code Online (Sandbox Code Playgroud)注意:我不确定是否使用了正确的参数.如果我要使用它,请告知正确的用法.
应该使用哪种方式与证书颁发机构签署证书请求?一种方法比另一种方法更好(例如,一种方法被弃用)?
在Windows上使用OpenSSL时:
openssl genrsa -out privatekey.pem 1024 -->
创建成功
openssl req -new -x509 -key privatekey.pem -out publickey.cer -days 365
---->
Run Code Online (Sandbox Code Playgroud)
显示错误消息为
无法从/usr/local/ssl/openssl.cnf加载配置信息
有一种简单的方法可以验证给定的私钥是否与给定的公钥匹配?我有一些*.pub和一些*.key文件,我需要检查哪个与哪个.
同样,这些是发布/密钥文件,DSA.
我真的更喜欢某种单线......
我试图弄清楚如何在并发上下文中正确使用OpenSSL.Session API
例如假设我想实现一个stunnel-style ssl-wrapper,我希望有以下基本的骨架结构,它实现了一个天真的full-duplex tcp-port-forwarder:
runProxy :: PortID -> AddrInfo -> IO ()
runProxy localPort@(PortNumber lpn) serverAddrInfo = do
listener <- listenOn localPort
forever $ do
(sClient, clientAddr) <- accept listener
let finalize sServer = do
sClose sServer
sClose sClient
forkIO $ do
tidToServer <- myThreadId
bracket (connectToServer serverAddrInfo) finalize $ \sServer -> do
-- execute one 'copySocket' thread for each data direction
-- and make sure that if one direction dies, the other gets
-- …Run Code Online (Sandbox Code Playgroud) 问题在于问题.我已经对这方面的解决方案进行了彻底的调查,我知道有这方面的主题,我也跟着他们,没有任何工作.话虽这么说,我会列出到目前为止我所做的一切.我在Windows XP计算机上的最新Eclipse版本上使用Zend Debugging运行PHP 5.2.14.我有1 GB的RAM.我安装了运行Apache,MySQL和FileZilla的XAMPP.
在XAMPP上我做了以下操作(在这些更改期间Apache已关闭):从XAMPP控制面板单击Admin并转到https:// localhost/xampp/.从那里我在欢迎页面上接受了这一行的证书:
对于OpenSSL支持,请使用https:// 127.0.0.1或https:// localhost的测试证书.
在同一部分,我检查phpinfo().在"环境"下,SERVER["HTTPS"]是on.在'Apache Environment'下,HTTPS是On.在"PHP变量"下,_SERVER["HTTPS"]是On.在'Phar'下,OpenSSL support是disabled(安装ext/openssl).我不知道如何启用Phar one.
现在关于C:\ xampp中的文件本身,我去了PHP文件夹.在生产和开发的php.ini文件(防患于未然),我allow_url_fopen=On,allow_url_include=On和我删除了分号,所以extension=php_openssl.dll不再注释掉.我甚至确认.dll位于PHP文件夹的ext文件夹中.libeay32.dll和ssleay32.dll都在PHP和Apache文件夹中.Apache文件夹不包含生产或开发php.ini文件.
为了安全起见,我去了http://www.slproweb.com/products/Win32OpenSSL.html并安装了Win32 OpenSSL v1.0.0d.
现在我的retrieve_website.php中的代码行如下所示:
$urlquery = "https://www.googleapis.com/customsearch/v1?key=".$appid."&cx=".$google_searchid."&q=".$query."&alt=atom&num=".$results;
$xmlresults = file_get_contents($urlquery);
Run Code Online (Sandbox Code Playgroud)
我有两个其他网站,我查询,但他们通过HTTP服务,他们工作正常.我还在脚本末尾附近输入了这行代码:
echo 'openssl: ', extension_loaded ('openssl') ? 'yes':'no', "\n";
echo 'http wrapper: ', in_array('http', $w) ? 'yes':'no', "\n";
echo 'https wrapper: ', in_array('https', $w) …Run Code Online (Sandbox Code Playgroud)