在VC 2010上使用SSL的libpq
libpq with SSL on VC 2010
在支持SSL的windows(VS2010 32和64位)上编译libpq时遇到问题。我下载了的最新来源postgres以及OpenSSL Win64 v1.0.1c。我在libpq文件夹中运行了nmake:
cd postgresql-9.2.2\interfaces \libpq
nmake/f win32.mak CPU=AMD64 USE_SSL=1 SSL_INC=C:\OpenSSL-Win64\include SSL_LIB_PATH=C:\OpenSSL Win64\LIB
然后编译结束,他找不到bufferoverflowU.lib。搜索一点我发现,这个库是与windows SDK一起部署的,并且由于VS 2005不再需要(请参阅Vista/Win 7 SDK bufferoverflowu.lib链接错误)。因此,在libpq的make文件(win32.mak:20)中,我注释掉了这一行
ADD_SECLIB=缓冲区溢出U.lib
并且编译良好。使用ssl测试这个libpq时,我也没有遇到任何问题。
我需要良心不安地从构建中删除bufferoverflowU.lib吗?还是仅仅因为makefile不适用于VS2010?(顺便说一句:openssl在VC文件夹中将其库的名称分别更改为*MD.lib和*MT.lib。旧的命名库位于C:\openssl-Win64\lib中,一个目录向上)
有人能告诉我在VS2010版本中是否需要bufferoverflowU.lib吗?
干杯,550
有人能告诉我VS2010版本中是否需要bufferoverflowU.lib吗?
不,不再需要了。bufferoverflow.lib
和朋友们被推入了检查堆栈cookie的代码中。请参阅此KB:使用Win32软件开发工具包(SDK)或Windows Server 2003 Service Pack 1的Windows Server 2003驱动程序开发工具包(DDK)生成源代码时,您可能会收到"Linker tools error LNK2001"错误消息。
我相信您可以通过/GS
开关消除这个问题并强化您的可执行文件。
nmake /f win32.mak CPU=AMD64 USE_SSL=1 SSL_INC=C:OpenSSL-Win64include
SSL_LIB_PATH=C:OpenSSL-Win64lib
您应该考虑添加中讨论的所有开关,使用Visual C++Defenses保护您的代码。以下是列表,以防时间紧迫:
- /GS
- /安全SEH
- /NXCompat
- /DynamicBase
此外,如果可能的话,您应该#define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES 1
。最后,您还应该将#pragma strict_gs_check(on)
添加到Windows上的高风险源文件中。它应该谨慎使用,但建议在高风险的情况下使用,例如当源文件解析来自互联网的输入时。
*nix项目错过Windows上的安全开关是很常见的。我称之为"断开连接",我看到它是双向的(*nix->Windows和Windows->*nix)。不可能每个人都是无所不知的专家;)
(很抱歉有点走神。糟糕的项目设置是我最讨厌的)。
- SSL上的`curl_easy_send`和`curl_asy_recv`:如何处理`CURLE_AGAIN`
- 使用 OpenSSL 从内存中读取原始 SSL/TLS 证书
- Mongocxx无法使用SSL连接到mongoDB
- 如何使用MinGW编译器和SSL支持静态编译Qt
- curl_easy_perform() 失败:SSL 对等证书或 SSH 远程密钥不正常
- PostgreSQL C++ libpq 编码 UTF-8 问题
- 如何在 Windows 中通过 SSL 端口枚举域控制器
- 我需要帮助来缩短检索 SSL 证书的执行时间
- Windows 和 Android 应用程序是否需要 SSL?
- 如何使用QWebEngineView忽略SSL证书错误
- CPPRestSdk给出错误SSL错误:WINHTTP_CALLBACK_STATUS_FLAG_INVALID_CA
- 成功完成TLS握手后,服务器关闭时出现错误的SSL例程:SSL3_GET_RECORD:错误的版本号
- 如何从 boost::asio::ssl::stream<boost::asio::ip::tcp::socket> 获取本机套接字文件描述器?
- Qt 错误消息"qt.network.ssl: QSslSocket::connectToHostEncrypted: TLS initialization failed"
- OCCI:使用SSL钱包身份验证连接到OracleDB
- 如何在Mac OSX上的Qt中使用pkcs12 / pfx成功执行SSL加密?
- 使用 qt 进行 SSL 握手期间出错
- 提升 Asio SSL 无法第二次接收数据(第一次确定)
- 打开 SSL 查询客户端证书
- 在VC 2010上使用SSL的libpq