问题
我下载了mongodb 3.0.7tar文件.然后我将bin目录添加到我的路径:
export PATH=<mongodb-install-directory>/bin:$PATH
Run Code Online (Sandbox Code Playgroud)
然后当我运行mongodb服务器时:
mongod --fork --logpath "/home/me/mongolog" --dbpath "/home/me/data"
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
mongod: error while loading shared libraries: libssl.so.10: cannot open shared object file: No such file or directory
Run Code Online (Sandbox Code Playgroud)
我做了什么
我试过这个解决方案.简而言之,我更新了我的openssl:
sudo apt-get update
sudo apt-get install libssl1.0.0 libssl-dev
Run Code Online (Sandbox Code Playgroud)
然后:
cd /lib/x86_64-linux-gnu
sudo ln -s libssl.so.1.0.0 libssl.so.10
sudo ln -s libcrypto.so.1.0.0 libcrypto.so.10
Run Code Online (Sandbox Code Playgroud)
但它说它无法找到libssl.so.10和libcrypto.so.10.我不知道该怎么办!
当我在 Macbook 上运行以下命令时,出现错误:
>>> import hashlib
>>> hashlib.md5(usedforsecurity=False)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: openssl_md5() takes no keyword arguments
Run Code Online (Sandbox Code Playgroud)
但是当我在我的 Linux 机器上运行它时,它就可以工作了!
>>> import hashlib
>>> hashlib.md5(usedforsecurity=False)
<md5 HASH object @ 0x7f763c1375d0>
Run Code Online (Sandbox Code Playgroud)
我的问题是,我需要在启用 FIPS 的系统上运行一些安全、非安全相关的代码(例如管理用户请求的缓存,将用户查询哈希为 MD5 字符串)。使用该usedforsecurity标志可防止 FIP 异常。
这工作得很好,除非我想在 Macbook 上测试我的代码。我的 Macbook 的“libcrypto”库显然不支持此usedforsecurity标志。有没有一个好方法来检测背后的底层 C 绑定hashlib.md5是否支持此标志?
我正在使用OpenSSL的高级EVP_*()功能在应用程序中实现加密/解密方案,因此我可以轻松切换使用的实际算法,而无需更改API调用。
我可以相对轻松地创建一个密钥对:
// dumbed down, no error checking for brevity
EVP_PKEY * pkey;
// can change EVP_PKEY_RSA to something else here
EVP_PKEY_CTX * context = EVP_PKEY_CTX_new_id( EVP_PKEY_RSA, NULL );
EVP_PKEY_keygen_init( ctx );
// could set parameters here
EVP_PKEY_keygen( context, &pkey );
// ...
EVP_PKEY_CTX_free( context );
Run Code Online (Sandbox Code Playgroud)
pkey现在拥有一个密钥对,即秘密密钥和公共密钥。这对于事物的秘密方面很好,但是显然我只想提取公共密钥组件以用于事物的公共方面。
我能够找到特定于RSA的功能,但使用高级EVP_*()API 却一无所获。
救命?
这只是知识的共享。我希望我节省了某人的时间。
如果您有 Fedora Linux(我现在使用 f25)但想使用Tizen Studio(官方它只适用于 Ubuntu Linux),您在安装和启动 Studio 后可能会遇到这些问题:
问题是sdb工具没有启动( ~/tizen-studio/tools/sdb)
要检查嫌疑人,您可以尝试启动sdb,它必须失败并显示错误:sdb: error while loading shared libraries: libcrypto.so.1.0.0: cannot open shared object file: No such file or directory。
然后,如果您sdb使用ldd命令进行检查,您将看到libcrypto.so.1.0.0未找到:
user@host$ ldd ~/tizen-studio/tools/sdb
linux-vdso.so.1 (0x00007ffc9dbf9000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fd8fc5be000)
libcrypto.so.1.0.0 => not found
libc.so.6 => /lib64/libc.so.6 (0x00007fd8fc1f8000)
/lib64/ld-linux-x86-64.so.2 (0x0000560aab3af000)
Run Code Online (Sandbox Code Playgroud)
不幸的是,这个问题不能用简单的解决symlink来libcrypto.so和libssl.so和在Fedora …
我创建了一个使用本机代码的android应用程序.
它需要来自OpenSSL的libcrypto.a库,我不记得我在哪里下载它,但它的工作原理.问题是lib的版本是1.0.0a,我想更新到最新版本(现在是v1.0.1e).我下载https://github.com/android/platform_external_openssl并试图编译它,但也有很多错误,而编译.我不知道如何生成lib.
或者,也许(从C和H文件http://www.openssl.org/source/)可以包含在我的C&H文件,而不是用lib?
谢谢!
我在这里遇到了一些C++程序的问题.基本上我已经为http请求编写了一个简单的包装器,能够一次执行多个请求.工作得很好,但是当我做httpS请求时,它会在多线程模式下随机崩溃.我正在使用curl和posix线程.Backtrace看起来像这样:
======= Backtrace: =========
/lib/x86_64-linux-gnu/libc.so.6(+0x80996)[0x7fea9046d996]
/lib/x86_64-linux-gnu/libc.so.6(+0x82b80)[0x7fea9046fb80]
/lib/x86_64-linux-gnu/libc.so.6(realloc+0xf2)[0x7fea90470ae2]
/lib/x86_64-linux-gnu/libcrypto.so.1.0.0(CRYPTO_realloc+0x49)[0x7fea8f9c6169]
/lib/x86_64-linux-gnu/libcrypto.so.1.0.0(lh_insert+0x101)[0x7fea8fa4bfb1]
/lib/x86_64-linux-gnu/libcrypto.so.1.0.0(+0xe844e)[0x7fea8fa4e44e]
/lib/x86_64-linux-gnu/libcrypto.so.1.0.0(ERR_get_state+0xde)[0x7fea8fa4eeee]
/lib/x86_64-linux-gnu/libcrypto.so.1.0.0(ERR_clear_error+0x15)[0x7fea8fa4f065]
/usr/lib/x86_64-linux-gnu/libcurl.so.4(+0x24e79)[0x7fea90f10e79]
/usr/lib/x86_64-linux-gnu/libcurl.so.4(+0x39ea0)[0x7fea90f25ea0]
/usr/lib/x86_64-linux-gnu/libcurl.so.4(+0xf8fd)[0x7fea90efb8fd]
/usr/lib/x86_64-linux-gnu/libcurl.so.4(+0x219f5)[0x7fea90f0d9f5]
/usr/lib/x86_64-linux-gnu/libcurl.so.4(+0x35538)[0x7fea90f21538]
/usr/lib/x86_64-linux-gnu/libcurl.so.4(curl_multi_perform+0x91)[0x7fea90f21d31]
/usr/lib/x86_64-linux-gnu/libcurl.so.4(curl_easy_perform+0x107)[0x7fea90f19457]
./exbot[0x40273a]
/lib/x86_64-linux-gnu/libpthread.so.0(+0x7f6e)[0x7fea90cd6f6e]
/lib/x86_64-linux-gnu/libc.so.6(clone+0x6d)[0x7fea904e79cd]
Run Code Online (Sandbox Code Playgroud)
这可能是libcrypto中的错误吗?我能以某种方式告诉curl不要使用libcrypto吗?任何替代品?它只使用httpS请求来获取wenn,并且即使10000个同时的http查询也能正常工作.
干杯,托马斯
为了完整我的代码:
// simple wrapper for http requests
#ifndef _REQUEST_H_
#define _REQUEST_H_
#include <curl/curl.h>
#include <pthread.h>
#include <string>
#include <iostream>
//////////////////////////////////
// MACROS
//////////////////////////////////
#define ERR(_msg) std::cerr << __FUNCTION__ << ": " << _msg << std::endl
//////////////////////////////////
// REQUEST WRAPPER
//////////////////////////////////
typedef unsigned int uint;
class RequestWrapper
{
private: // non copyable
RequestWrapper();
RequestWrapper(const RequestWrapper &that);
RequestWrapper …Run Code Online (Sandbox Code Playgroud) 我目前正在开发一个应用程序,它使用 openssl 库 (libcrypto) 来生成证书。现在我必须获取现有证书的哈希值。
当我使用我的终端时,我能够通过使用生成哈希值
openssl x509 -hash -in cert.pem -noout
Run Code Online (Sandbox Code Playgroud)
输出:01da0e2b
这是我尝试使用 C 中的库生成哈希值的代码。
X509 *cert = NULL;
FILE *fp = fopen(currentCert.UTF8String, "r");
PEM_read_X509(fp, &cert, NULL, NULL);
long hash = X509_subject_name_hash(cert);
char *mdString = malloc(sizeof(long));
sprintf(mdString, "%lx",hash);
printf(mdString);
Run Code Online (Sandbox Code Playgroud)
输出:1817886a
但实际上我的输出是不同的。有人知道我做错了什么吗?
最近我的 lambda 代码停止工作。我无法再使用 sqlalchemy 创建与 Snowflake 的连接。请参阅下面的错误堆栈。
The library libcrypto could not be found: LibraryNotFoundError
Traceback (most recent call last):
(...)
File "/var/task/sqlalchemy/engine/base.py", line 2263, in connect
return self._connection_cls(self, **kwargs)
File "/var/task/sqlalchemy/engine/base.py", line 104, in __init__
else engine.raw_connection()
File "/var/task/sqlalchemy/engine/base.py", line 2370, in raw_connection
self.pool.unique_connection, _connection
File "/var/task/sqlalchemy/engine/base.py", line 2336, in _wrap_pool_connect
return fn()
File "/var/task/sqlalchemy/pool/base.py", line 304, in unique_connection
return _ConnectionFairy._checkout(self)
File "/var/task/sqlalchemy/pool/base.py", line 778, in _checkout
fairy = _ConnectionRecord.checkout(pool)
File "/var/task/sqlalchemy/pool/base.py", line 495, in checkout
rec = pool._do_get() …Run Code Online (Sandbox Code Playgroud) sqlalchemy libcrypto aws-lambda snowflake-cloud-data-platform
有没有办法用OpenSSL/ 计算AES CMAC libcrypto?
优选地,以利用AES-NI(或任何其他硬件加速)的方式.
我试图根据这些说明为Debian安装ODBC驱动程序:https://blog.afoolishmanifesto.com/posts/install-and-configure-the-ms-odbc-driver-on-debian/
但是试图运行:
sqlcmd -S localhost
我收到了错误
libcrypto.so.10:无法打开共享对象文件:没有这样的文件或目录
可能是什么原因?
到目前为止我已经尝试过
1.
$ cd /usr/lib
$ sudo ln -s libssl.so.0.9.8 libssl.so.10
$ sudo ln -slibcrypto.so.0.9.8 libcrypto.so.10
2.
/usr/local/lib64 to the /etc/ld.so.conf.d/doubango.conf file
3.
sudo apt-get update
sudo apt-get install libssl1.0.0 libssl-dev
cd /lib/x86_64-linux-gnu
sudo ln -s libssl.so.1.0.0 libssl.so.10
sudo ln -s libcrypto.so.1.0.0 libcrypto.so.10
4. Sudo apt-get install libssl0.9.8:i386
Run Code Online (Sandbox Code Playgroud)
这些都没有帮助.