Articles of openssl

用于64位Windows的OpenSSL和“不共享密码”

我刚编译并安装了64位Windows的OpenSSL。 我使用以下命令创build了一个自签名证书和一个私钥: openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 10000 -nodes 我现在正在testingOpenSSL Wiki中使用Firefox的“简单TLS服务器”示例以及一些支持Winsock的修改,但是我一直在收到错误 11216:error:1417A0C1:SSL routines:tls_post_process_client_hello:no shared cipher:ssl\statem\statem_srvr.c:1422: (第一个数字总是不一样)在执行SSL_accept()函数期间。 我已经在使用Wireshark连接到HTTPS服务器(因为在本地主机上捕获很困难)的情况下,检查了Firefox(v 43.0.1)在其TLS v1.2客户端Hello中发送的(11)密码列表,并将其与支持的通过我的安装OpenSSL(find使用openssl.exe ciphers -s -tls1_2 -V )。 结果是有通用的密码,所以我错过了什么? 包含statem_srvr.c的行1422的块如下,从1420开始: if (cipher == NULL) { SSLerr(SSL_F_TLS_POST_PROCESS_CLIENT_HELLO, SSL_R_NO_SHARED_CIPHER); goto f_err; } 对原始代码的修改在while循环之前和标题中: #pragma comment(lib,"Ws2_32.lib") #include <stdio.h> #include <winerror.h> #include <WinSock2.h> #include <openssl/ssl.h> #include <openssl/err.h> #include […]

用于在服务器上存储Openssl密码的安全选项(Linux,Python,CherryPy)

我已经实现了一个HTTP服务器(CherryPy和Python),它从客户端(Android)接收encryption文件。 我正在使用OpenSSL来解密上传的文件。 目前我正在使用openssl -enc -pass file:password.txt -in encryptedfile -out decryptedfile来执行解密在服务器端。 正如你所看到的,openssl使用的密码存储在一个纯文本文件(password.txt)中。 有没有更安全的方式来存储这个OpenSSL密码? 谢谢。

使用opensslencryption文件的问题evp api(aes256cbc)

我正在尝试在这种情况下读取一个文件(.txt),并使用openssl的EVP api使用AES256CBC对其进行encryption/解密。 (读(plain.txt) – >创build(encrypt.txt) – >创build(decrypt.txt)) # include <stdio.h> # include <stdlib.h> # include <openssl/evp.h> # include <openssl/aes.h> # include <sys/types.h> # include <sys/stat.h> # include <fcntl.h> # include <unistd.h> # include <string.h> # include <assert.h> # include <error.h> # include "debug.h" # define SIZE 32 char buf[SIZE]; int aes_init(unsigned char* pwd, unsigned int […]

ECDSA证书问题提升asio

我正在使用boost :: asio实现SSL服务器。 上下文初始化显示在下面的代码中 boost::asio::ssl::context_base::method SSL_version = static_cast<boost::asio::ssl::context_base::method>(param_values[ID_PROTOCOL_VERSION].int32_value); // load certificate files boost::shared_ptr<boost::asio::ssl::context> context_ = boost::shared_ptr<boost::asio::ssl::context>( new boost::asio::ssl::context(SSL_version)); p_ctx = boost::static_pointer_cast<void>(context_); context_->set_options(boost::asio::ssl::context::default_workarounds); context_->use_certificate_chain_file(cert_chain_file); context_->use_certificate_file(cert_file, boost::asio::ssl::context::pem); context_->use_private_key_file(cert_file, boost::asio::ssl::context::pem); context_->set_verify_mode(boost::asio::ssl::verify_peer | boost::asio::ssl::verify_fail_if_no_peer_cert); context_->set_verify_callback(boost::bind(&verify_certificate_cb, _1, _2)); if (param_values[ID_CIPHER_LIST].int32_value != 0) { std::string cipher_list = ""; generate_cipher_list(param_values[ID_CIPHER_LIST].int32_value, cipher_list); MA5G_logger::log(PRIORITY_INFO, "Supported cipher list %s", cipher_list.c_str()); SSL_CTX_set_cipher_list((reinterpret_cast<boost::asio::ssl::context*>(p_ctx.get()))->native_handle(), cipher_list.c_str()); } 在cipher_list ,我支持下面的列表 […]

CertificateException:不存在主题替代名称

在调用https webservice时出现以下exception。 com.sun.xml.internal.ws.client.ClientTransportException: HTTP transport error: javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: No subject alternative names present. 我正在从Java代码中调用一个php webservice。 CN(通用名称),即证书上的IP地址和我所调用的IP地址是不同的。 我已经在java的密钥库中添加了证书。 有人能帮我解释为什么会发生这种情况吗? 我哪里去错了? CN是服务器IP地址。 我打电话给那个服务器使用它的外部IP地址也给我们,因为防火墙的问题。

在gdb下运行时,SSL_library_init会导致SIGILL

试图使用gdbdebugging程序,它报告OPENSSL_cpuid_setup中的SIGILL失败。 有了这个简单的代码,我有相同的行为: #include <openssl/ssl.h> int main() { SSL_library_init(); } 它编译和运行良好,但从跟踪回溯开始gdb报告 Program received signal SIGILL, Illegal instruction. 0xb6b2eb40 in ?? () from /usr/lib/arm-linux-gnueabihf/libcrypto.so.1.0.0 (gdb) where #0 0xb6b2eb40 in ?? () from /usr/lib/arm-linux-gnueabihf/libcrypto.so.1.0.0 #1 0xb6b2b404 in OPENSSL_cpuid_setup () from /usr/lib/arm-linux-gnueabihf/libcrypto.so.1.0.0 #2 0xb6fdf058 in call_init (l=<optimized out>, argc=1, argv=0xbefff7d4, env=0xbefff7dc) at dl-init.c:78 #3 0xb6fdf134 in _dl_init (main_map=0xb6fff958, argc=1, […]

OpenSSL:接受TLS连接,然后转移到另一个进程

我们有一个运行两个进程A和B的(Linux)服务器。当前,客户端build立到进程A的连接,然后把结果的套接字的文件描述符传递给进程B,允许进程B使用现有的fd /套接口进行无缝通信与客户。 然后,客户端和进程B执行TLS握手,并继续通过生成的TLS连接进行通信。 (我在这里遗漏了很多细节,但是是的,有一个很好的理由让stream程A充当中介,而不是直接连接到stream程B) 现在,由于<long complicated story involving new client applications and websockets> ,看起来我们可能必须在进程A中执行TLS握手,然后将已build立的TLS连接传输到进程B. 那可能吗? 底层套接字的文件描述符可以被复制(我们已经这样做了),至less在理论上,内部TLS状态数据也可以被复制并用于在过程B中重buildTLS连接,有效地接pipe连接。 但是OpenSSL是否暴露了这样的设施? 我发现函数d2i_SSL_SESSION似乎为OpenSSL会话对象做了类似的事情,但是对于OpenSSL来说是相当新的,我不确定这是否足够。 有会议,上下文,生物和一些其他复杂冠冕堂皇的条款涉及。 多less将不得不被序列化并转移到过程B为此工作? 而且在实践中怎么做呢? 切换对于客户端来说是100%透明的:它必须简单地对一个给定的IP /端口执行SSL握手,然后继续在所产生的套接字上通话,而不知道一个进程接受连接并执行TLS握手,然后另一个处理所有后续的通信。

64位的Linux / Ubuntu和OpenSSL的问题(无法读取符号:值不好)

通常我会search很多东西并阅读很多东西来解决我的问题,但是对于这个特殊的问题,这是非常不利的。 我正在运行一个64位的Ubuntu Linux服务器,我安装了LAMP堆栈,并且libcurl没有SSL支持,而OS二进制文件有SSL支持。 PHP不能读取它。 当我search解决scheme,并尝试执行以下操作以在安装PHP时启用SSL支持,我得到了问题.. ./configure …. –with-openssl … …. /usr/bin/ld: ext/standard/.libs/info.o: relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC ext/standard/.libs/info.o: could not read symbols: Bad value collect2: error: ld returned 1 exit status make: *** [libphp5.la] Error 1 所以,它突然停了下来。 我试着做–enable-shared –without-pic的参数无济于事。

Shopify + Ubuntu 12.04LTS + Faraday问题=确定使用旧的OpenSSL?

我正在使用Ubuntu 12.04LTS Desktop开发Shopify应用程序(使用shopify_app gem),在处理callbackURL时遇到了这个问题。 Faraday::Error::ConnectionFailed (Connection reset by peer – SSL_connect) 看看这里和这里的shopify-app-discuss小组,看起来问题在于Ubuntu 12.04及其OpenSSL。 我试图安装最新的OpenSSL,但没有。 我find的另一种方法是使用一种不同的,较老的OpenSSL,一种由RVM提供的。 $ rvm remove 1.9.3 (or whatever version of ruby you are using) $ rvm pkg install openssl $ rvm install 1.9.3 –with-openssl-dir=$rvm_path/usr 现在Shopify应用程序工作正常。 它可以连接到API。 (这个提示可能会帮助其他Ubuntu 12.04用户!) 所以,我的问题是:这是最好的解决scheme吗? 我有点担心旧的OpenSSL版本。 它可能有一些安全问题。 用这个开发应用程序是否安全? 而当我部署应用程序(如Heroku),是否会有一个旧的OpenSSL的安全问题? 提前致谢!

OpenSSL:无法使用SSL_CTX_new()创buildSSL_CTX *

按照页面上的说明,我正在尝试使用openSSL以安全的方式连接客户端/服务器。 我无法创buildSSL_CTX,如下所示: /* OpenSSL headers */ #include "openssl/bio.h" #include "openssl/ssl.h" #include "openssl/err.h" int main() { /* Initializing OpenSSL */ SSL_load_error_strings(); ERR_load_BIO_strings(); OpenSSL_add_all_algorithms(); SSL_CTX * ctx = SSL_CTX_new(SSLv23_client_method()); ….. } ctx引用总是变成NULL。 任何人都可以请告诉我错过了什么步骤? 谢谢。 更新 在检查错误,消息是 Error: library has no ciphers