Меню

Как подключить openssl visual studio

How to include OpenSSL in Visual Studio

I am having a hard time trying to add openssl to my project. I have downloaded the precompiled installer for windows, and I have the libraries installed, but I can’t find a way to include openssl in my project.

Note: I am using Visual Studio Expres 2012 on Windows 7 x64, but it’s not restricted to that environment.

3 Answers 3

Intro

Although the question / answer is based on:

it applies to any OpenSSL version (v.0.9.*, v1.0.*, v1.1.*, v3.0), and any VStudio version (v2005+)

Let’s assume you have installed OpenSSL in a dir like: «C:\Program Files\Openssl-Win32-1.0.1p. « (or whatever other name); I am going to refer to that as OPENSSL_INSTALL_DIR (as it was an env var). So %OPENSSL_INSTALL_DIR% should contain a bunch of dirs and files, out of which matter for us:

Files (since their names vary across versions, I’m going to refer to them using (Nix style var) placeholders; also they might be located in a bin subdir):

where LIBCRYPTO (#1.) and LIBSSL (#2.) are defined as follows:

In order to make use of it, in your VStudio project you have to:

Of course you could add %OPENSSL_INSTALL_DIR%\include\openssl dir to your project, and then the above include statement would be:

but the former is preferred (recommended)

Configure the linker ([MS.Docs]: Linker Options)
Instruct it:

Now, if all your settings and source code are correct, you should have a «buildable» project. When you’ll want to run your project output (either an .exe or a .dll needed by another executable, I am not discussing here the possibility of you are using the static libs), the executable will need to find the 2 .dlls that I mentioned at the beginning. For that, you should either:

Copy them in the folder where your executable is located ([MS.Docs]: Dynamic-Link Library Search Order)

Copy them in one of the folders from your %PATH% env var

Add their dir to your %PATH% var.
Some installers might copy the 2 .dlls in your «%SystemRoot%\System32» dir, and in that case this will no longer be necessary (I find this practice of copying stuff in system dirs a bad one, as in our current example multiple versions can ship the same file names, and the last one installed would overwrite all the others)

Читайте также:  Как подключить ноутбук к принтеру без usb

Источник

Защищенное TLS-соединение с использованием Boost.Asio и OpenSSL под Windows

Введение

Однажды мне потребовалось создать защищенный канал связи между своим сервером и своим приложением. Я помнил, что в документации к Boost Asio упоминалось, что он может работать с защищенными соединениями, используя OpenSSL. Я начал искать информацию по этой теме, но, увы, мало что нашел, тем более под Windows. Так что теперь, разобравшись с этим вопросом, я решил написать эту инструкцию, чтобы другим людям было проще разобраться.

Задача — нужно собрать под Windows сервер и клиент, используя Boost Asio и OpenSSL, чтобы клиент и сервер обменивались информацией по защищенному TLS-каналу. Для пример, я решил взять вот этот клиент и сервер с официального сайта Boost.

Для того чтобы решить эту задачу, нам нужно собрать OpenSSL, подготовить ключи и сертификаты, и собрать оба примера с использованием Boost Asio, OpenSSL.

Установка OpenSSL под Windows

Я взял OpenSSL из официального репозитория: github.com/openssl/openssl

Для сборки OpenSSL я использовал MS Visual Studio 2013, и я собирал статическую библиотеку.

Последовательность сборки следующая:
Сначала нужно сконфигурировать OpenSSL с помощью скрипта на Perl, под Win32. Ниже по тексту я буду считать, что OpenSSL у вас находится в C:\Work\OpenSSL. Вам следует зайти в этот каталог и вызвать скрипт конфигурации:

На этом нужно закрыть обычную командную строку, и запустить командную строку MS Visual Studio, в которой определены дополнительные пути к файлам и дополнительные переменные окружения. Вы можете найти командную строку MS Visual Studio в каталоге C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Tools\Shortcuts.

Из командной строки MS Visual Studio нужно перейти в каталог C:\Work\OpenSSL и запустить сборку с помощью nmake:

Это команда для сборки статической библиотеки, если вы хотите собрать динамическую библиотеку, то нужно запускать ntdll.mak.

После того, как сборка завершилась, нужно скопировать библиотеки и исходные файлы в новый каталог:

Читайте также:  Как подключить телефон к почте яндекс

На этом сборка OpenSSL под Windows завершена.

Сборка клиента и сервера

Как я и сказал раньше, для примера я решил взять вот эти клиент и сервер из документации по Boost Asio. Однако при попытке сборки я столкнулся с некоторыми проблемами, и в результате мне пришлось модифицировать исходники.

Хотя это место и объявлено как extern «C», и с точки зрения С тут нет никаких ошибок, но Visual Studio не дает нам никакой возможности отключить эту ошибку. Мне пришлось вносить изменения и преобразовывать тип явно:

Исходный код сервера:

Исходный код клиента:

Создание ключей и сертификатов

На этом этапе клиент и сервер запускаются, теперь необходимо проверить их работу. Для этого нужно создать корневой сертификат и подписать им сертификат для сервера.

После сборки в каталоге C:\Work\OpenSSL\output\bin будет лежать openssl.exe, нужно воспользоваться им, чтобы сгенерировать ключи и сертификаты.

Для начала создаем приватный ключ для корневого сертификата:

Потом на основе этого ключа создаем корневой сертификат, действующий 20000 дней:

В интерактивном меню вас попросят ввести двухбуквенный код страны, провинцию, город, организацию, подразделение, Common Name и e-mail адрес. Нужно заполнить все поля на свое усмотрение.

Теперь нужно создать другой сертификат, подписанный корневым сертификатом.

Создаем еще один ключ:

Создаем запрос на подпись:

В интерактивном меню вам потребуется ответить на те же вопросы, что и при создании корневого сертификата. Нужно, чтобы введенный вами Common Name отличался от Common Name у корневого сертификата, это важно!

Теперь подписываем этот запрос корневым сертификатом:

На всякий случай можно проверить, что подписано все правильно:

Первая команда должна вернуть OK, потому что корневой сертификат — самоподписанный.

Вторая команда должна вернуть ОК, потому что user.crt подписан корневым сертификатом.

Последняя команда должна вернуть ошибку, потому что user.crt не является самоподписанным. Если последняя команда возвращает OK, значит что-то пошло не так. В моем случае для исправления нужно было всего лишь сделать Common Name у обоих сертификатов различающимся.

И напоследок, нам еще понадобится DH-параметры, которые нужны для Протокола Диффи — Хеллмана, нужно их сгенерировать. Генерация займет некоторое время:

На этом все, теперь достаточно прописать клиенту и серверу пути к этим файлам, и вы сможете установить между ними защищенное соединение.

Читайте также:  Как подключить интернет билайн на телефоне samsung

Источник

Как использовать OpenSSL с Visual Studio

Может ли кто-нибудь помочь с использованием/связыванием библиотек OpenSSL в проекте Visual Studio?

Я знаю это старое! Я столкнулся с проблемой сам и здесь решение.

Прежде всего, вы должны установить (обычную обычную установку) openssl. (Это от здесь).

Теперь, после создания проекта, я цитирую:

Убедитесь, что в свойстве проекта установлены следующие настройки страниц:

[C/С++ → Общие → Дополнительные каталоги]: OpenSSLs включают каталог на вашем компьютере (например, C:\openssl\include)

[Linker → Общие сведения → Дополнительные библиотечные каталоги] значение: OpenSSLs lib на вашем компьютере (например, C:\openssl\lib)

[Linker → Input → Дополнительные зависимости]: libeay32.lib

Я сам их пробовал, но я все еще получаю ошибки. OpenSSL и Visual Studio не мои сильные стороны, но, возможно, вы можете понять это.

Хорошо, это больше, чем год, но я не мог найти ответ, поэтому я пробрался. Я получил openssl-1.0.1e для компиляции с использованием VS 11 как такового:

Я пытался использовать PERL, который поставляется с git, не работал, пришлось установить ActivePerl

Взято из ссылка, предоставленная Nitesh:

Per этот пост, я отредактировал ms\ntdll.mak и изменил CC на:

Я не стал устанавливать и просто добавил каталог openssl-1.0.1e\out32dll в Configuration Properties → Linker → Дополнительные библиотечные каталоги и openssl-1.0.1e\inc32 в Свойства конфигурации → C/С++ → C/С++ → Общие → Дополнительные каталоги Include, скопировали libeay32.dll куда-нибудь на моем пути и назвали это хорошим. Кажется, работает.

Добавьте связанные заголовочные файлы openssl и ниже заголовков.

Открыть ниже Ссылка и загрузка предварительно скомпилированных файлов.

extarct и сохранить папку на диске C Для получения инструкций используйте readme_precompile.txt.

Откройте проект Visual С++ и последующую процедуру, приведенную ниже, чтобы включить и параметры Linker.

Убедитесь, что на страницах свойств проекта установлены следующие настройки: [C/С++ → Общие → Дополнительные каталоги включения] value: OpenSSLs включают каталог на вашем компьютере (например, C:\openssl\include) или (например, C:\openssl\include64) [Linker → Общие сведения → Дополнительные библиотечные каталоги] значение: каталог OpenSSLs lib на вашем компьютере (например, C:\openssl\lib) или (например, C:\openssl\lib64) [Linker → Input → Additional Dependencies] Значение:

Источник