Openssl mac os что это

Обновлено: 07.07.2024

Тема генерации самоподписных сертификатов (self-signed certificate) для WEB серверов не нова, но недавно произошло знаковое событие.

Корпорация Apple, в очередной раз, преподнесла сюрприз своим поклонникам и выдвинула дополнительные требования к сертификатам безопасности (cсылка на первоисточник).

Подобная забота заблокировала возможность доступа ко всем сайтам, на которых установлены сертификаты, не удовлетворяющие требованиям Apple: Your connection is not private: NET::ERR_CERT_INVALID.

И если старые сайты будут работать с самоподписными сертификатами какое-то время, то сертификаты для новых проектов надо генерировать с учетом этих требований.

Что нового в требованиях Apple

Новые требования Apple к TLS сертификатам распространяются на все сертификаты, сгенерированные после 1 июля 2019 года. Эти требования были введены с обновлениями систем iOS 13 и macOS 10.15.

Из релиза Apple ясно, что новые сертификаты должны:

  • иметь размер не менее 2048 бит;
  • срок действия сертификата не должен превышать 825 дней;
  • при генерации сертификатов должен использоваться алгоритм хеширования семейства SHA-2;
  • в дополнение с CommonName, в сертификате должно указываться DNS имя сервера в расширении сертификата Subject Alternative Name;
  • сертификат должен содержать расширение ExtendedKeyUsage (EKU), содержащее идентификатор объекта id-kp-serverAuth.

Генерация self-signed сертификатов на MacOS

Пожалуй, самый простой способ сгенерировать самоподписанный сертификат, сделать это на MacOS.


Сгенерировать новый сертификат с типом SSL Server (SSL Сервер) и параметрами по умолчанию. В качестве имени сертификата необходимо указать полное имя (FQDN) вашего сервера.


После генерации сертификата его необходимо экспортировать на компьютер в формате .p12. В этом файле в зашифрованном виде будут сохранены как приватный ключ (private key), так и самоподписанный сертификат (self-signed certificate).


Полученный файл необходимо перенести на сервер, где вы планируете использовать новый сертификат, и конвертировать в вид, подходящий для WEB сервера.

Для конвертации удобно использовать стандартную программу OpenSSL:

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

После этого останется только подложить полученный ключ и сертификат в папки, прописанные в настройках WEB-сервера, и перезапустить его.

Генерация самоподписанного сертификата с помощью OpenSSL

Пожалуй, это один из самых распространенных способов генерации самоподписанных сертификатов непосредственно на сервере.

Для тех, кого не интересуют подробности генерации, приводим строку, которая выполнит автоматическую генерацию секретного ключа (private key) и самоподписанного сертификата (self-signed certificate) в текущем каталоге сервера.

Обратите внимание, что для корректной генерации Вам необходимо указать полное имя сервера (FQDN) в начале этой последовательности команд, изменив значение переменной HOSTNAME (подставить свое значение вместо YOUR_SERVER_NAME):

Теперь давайте разберем эту последовательность команд.

Здесь мы приводим список типовых команд, которые наиболее часто используются при работе с утилитой OpenSSL при обслуживании WEB-серверов.

Генерация секретного ключа и запроса на сертификацию

Генерация нового секретного ключа (private key) и запроса на сертификацию (Certificate Signing Request) без учета последних требований Apple:

Генерация самоподписанного сертификата (self-signed certificate) без учета последних требований Apple:

Генерация запроса на сертификацию для существующего ключа

Генерация запроса на сертификацию на основе сертификата

Снятие пароля с секретного ключа

Получение информации с помощью OpenSSL

Вывод информации о секретном ключе (private key)

Вывод информации о сертификате (certificate)

Сервисные команды

Получение контрольной суммы MD5, для проверки соответствия ключа, сертификата т запроса друг-другу

Проверка SSL подключения с получением сертификатов удаленного сервера:

Проверка срока действия сертификата на удаленном сервере:

Преобразование форматов

DER (.crt .cer .der) => PEM

С помощью ключей –nocerts и –nokeys можно извлечь только секретный ключ или сертификаты (соответственно)


Сетевая утилита telnet на слуху. Её в своё время очень активно использовало подавляющее большинство системных администраторов и прочих любителей удалённого администрирования серверов. Утилита позволяет получить доступ к портам удалённого хоста, пройти процедуру авторизации и запускать команды на этой машине.

Но протокол telnet не использует шифрование. В сегодняшних реалиях жертвовать безопасностью — непозволительная роскошь. Однако, есть ряд задач, которые telnet с переменным успехом может выполнять: тестирование сети, проверка портов, а также взаимодействие с IoT устройствами и роутерами.

Казалось бы, утилиту можно легко использовать, как продвинутую версию ping. Сама по себе, команда ping в лучшем случае всего лишь проверяет доступность хоста (иногда эту команду вообще не получится использовать, например, из-за ограничений политики доступа). А вот команда telnet не только проверяет, открыт ли порт, но и может взаимодействовать с сетевыми службами через этот порт. Но со временем мы всё чаще будет сталкиваться с необходимостью использовать зашифрованное соединение, где telnet вновь окажется бессилен.

OpenSSL и команда s_client

Поэтому в большинстве случаев вместо telnet я использую команду s_client из библиотеки OpenSSL. Команда s_client выполняет функции SSL/TLS клиента для подключения к удалённому хосту с различными настройками — ключ шифрования, вид рукопожатия, протокол и так далее. Команда также позволяет проверить, происходит ли возобновление сеанса.

Установка OpenSSL

Если библиотека OpenSSL ещё не установлена на вашей ОС, то её можно установить с помощью менеджера пакетов:

Проверка доступа к порту

Так работает команда telnet для проверки доступа к порту номер 25:

Теперь посмотрим, как работает аналогичная команда из OpenSSL:

Открываем интерактивный сеанс с зашифрованным подключением

Сначала подключимся к порту с помощью SSL. Используем опцию -showcerts, и SSL-сертификат будет распечатан на вашем терминале:

Почтовый сервер

Команду s_client можно использовать для тестирования зашифрованного соединения с почтовым сервером. Чтобы это работало, нам понадобится имя пользователя и пароль (в моём случае — для тестового пользователя), закодированные в Base64.

Закодировать их можно, например, так:


Если всё пройдёт успешно, можно переходить к следующему шагу — подключение к почтовому серверу через SSL. Обычно используется порт 587:

Неоправданный риск

Кто-то всё ещё использует telnet, но это уже не тот незаменимый инструмент, которым он когда-то был. Теперь во многих системах он классифицирован как «устаревший» пакет. Некоторые системные администраторы недоумевают, почему он исключён из установки по умолчанию. Telnet постепенно теряет актуальность. Это объективный процесс.

Сетевая безопасность жизненно необходима для большинства систем, поэтому стоит разобраться с соответствующими инструментами. Важно, что они способны работать с защищёнными подключениями. Так что во время тестирования или устранения неполадок не придётся отключать защиту системы и рисковать безопасностью.


Облачные серверы от Маклауд быстрые и безопасные.

Зарегистрируйтесь по ссылке выше или кликнув на баннер и получите 10% скидку на первый месяц аренды сервера любой конфигурации!


OpenSSL — универсальный криптографический инструмент, построенный вокруг протоколов SSL/TLS и сертификатов X.509.

Помимо того, что этот инструмент позволяет работать с соединениями SSL/TLS, сертификатами X.509, он может делать множество других полезных вещей: шифровать и расшифровывать файлы, создавать и проверять цифровые подписи, проверять числа на простоту, тестировать производительность компьютера и другое.

Содержание

Вопросы и ответы

Раздел написан на основе OpenSSL Command-Line HOWTO [1]

Введение

Как определить какую версию OpenSSL я использую?

Использовать опцию version:

Расширенная информация с опцией -a:

Как получить список доступных команд?

Вызвать с неправильным ключом (например, help или -h).

Аналогично с подкомандами:

Как посмотреть список доступных шифров?

Использовать команду ciphers:

Измерение производительности

Как измерить производительность системы с помощью openssl?

Пример для 2.16GHz Intel Core 2.

Каждый тест можно вызывать отдельно:

Как измерить производительность сетевого соединения?

Помимо этого простейшего измерения у подкоманды s_time есть множество других возможностей:

Сэмулировать web-сервер с помощью openssl s_server:

Сертификаты

Как сгенерировать самоподписной сертификат?

Создать файл mycert.pem, в котором будет и секретный ключ и открытый сертификат, основанный на нём. Сертификат будет действителен в течение 365 дней; ключ (благодаря опции -nodes) будет нешифрованным.

После вызова команды надо будет ответить на несколько вопросов: Country Name, State, City и так далее. На вопрос “Common Name” нужно отвечать именем сервера, по которому будут обращаться люди.

Как сгенерировать запрос сертификата у VeriSign?

Секретный ключ в файле mykey.pem и запрос на сертификат myreq.pem:

Если ключ уже есть, и его надо использовать только для генерации сертификата, используется команда попроще:

Или, с информацией для сертификата прямо в командной строке:

Не допускайте ошибок в названиях! Каждый символ важен.

Файл с ключом нужно сохранить в надёжном месте.

Как проверить новый сертификат?

Подкоманда s_server предоставляет простой, но эффективный метод тестирования. В примерах ниже предполагается, что ключ и сертификат хранятся в файле mycert.pem.

Запустите тестовый сервер на машине, на которой будет использоваться сертификат. По умолчанию, открывается порт 4433; другой порт можно задать опцией -accept.

Как получить удалённый сертификат?

С помощью openssl и sed:

Можно вернуть данные openssl, например, для того чтобы выяснить, для каких дат он действителен:

Как извлечь какую-либо информацию из сертификата?

В SSL-сертификате есть много информации, в частности:

  • кто выдал сертификат (issuer);
  • насколько долго он действителен (valid dates);
  • получатель сертификата (subject);
  • разнообразная криптографическая информация.

Опция текст даёт весь объём информации:

Другие опции дают другую информацию:

Извлечение открытого ключа, который требуется для проверки цифровой подписи (дайджеста):

Превратить pfx в pem:

Проверка сертификата

Приложения, слинкованные с библиотеками OpenSSL, могут проверять подлинность сертификатов, выданных сервером сертификатов (certificate authority, CA).

Как проверить сертификат?

Использовать подкоманду verify:

  • error 10 at 0 depth lookup:certificate has expired. Время действия сертификата истекло.
  • error 18 at 0 depth lookup:self signed certificate. Если не указать явным образом, openssl не будет проверять самоподписные сертификаты (self-signed certificate).

Какие центры сертификации распознаёт OpenSSL?

При сборке OpenSSL в нём настраивается местоположение OpenSSL-файлов (Directory for OpenSSL files). Этот параметр задаётся опцией --openssldir, передающейся конфигурационному скрипту. В этом каталоге, как правило, хранится информация о центрах сертификации, которым доверяет система.

По умолчанию, этот каталог находится в /usr/local/ssl, но большинство сборщиков размещает его в других местах, таких как /etc/pki/tls (Red Hat/Fedora), /etc/ssl (Gentoo), /usr/lib/ssl (Debian) или /System/Library/OpenSSL (Macintosh OS X).

Посмотреть, какой именно каталог используется в конкретной инсталляции, можно с помощью опции version(параметр OPENSSLDIR):

Внутри данного каталога есть подкаталог certs/, в котором находятся файлы трёх разных типов:

  1. Большой файл под названием cert.pem, объёмистый сборник многих сертификатов от признанных общеизвестных центров сертификации, таких как VeriSign и Thawte.
  2. Множество маленьких файлов с расширением .pem, каждый из которых содержит сертификат от отдельного центра сертификации;
  3. Символические ссылки в со странными именами вида 052eae11.0. Как правило, для каждого .pem-файла есть такая ссылка.

Первая часть странного имени ссылки — это, на самом деле, хэш, основанный на сертификате внутри .pem-файла, на который эта ссылка указывает. Расширение файла это итератор (то есть, номер), поскольку теоретически возможно, что разные сертификаты укажут на одинаковый хэш.

Например, ссылка f73e89fd.0 указывает на файл vsignss.pem. Значит, сертификат соответствует хэшу, который равен имени ссылки:

Когда приложение получает удалённый сертификат, оно сначала проверяет, есть ли этот сертификат в cert.pem и, если нет, смотрит в файле, соответствующем хэшу сертификата. Если такой файл найден, сертификат считается верным.

Нужно иметь в виду, что некоторые приложения, такие как Sendmail, например, позволяют во время исполнения указывать местоположение сертификатов, а некоторые, например Pine, нет.

Как мне заставить OpenSSL признавать сертификат?

Сертификат, которому нужно доверять, должен быть размещён в каталоге certs/. После этого необходимо создать хэшированную символическую ссылку на него. Вот небольшой скрипт, который делает это:

Клиенты и серверы для командной строки

Подкоманды s_client и s_server предоставляют возможность для запуска SSL-клиентов для командной строки.

Как подключиться к безопасному SMTP-серверу?

С помощью подкоманды s_client можно проверить или даже использовать SMTP-сервер с поддержкой SSL.

Безопасные SMTP-серверы могут предлагать безопасные соединения на портах: 25 (TLS), 465 (SSL) и 587 (TLS). Где-то в районе релиза 0.9.7 у openssl появилась возможность использовать STARTTLS в ходе общения с SMTP-серверами.

Чтобы использовать для обозначения конца строки именно CRLF, а не CR или LF, используется опция -crlf. Это важно особенно для Qmail.

Как подключиться к [какому-либо] безопасному серверу?

На момент написания openssl поддерживал TLS из командной строки только с SMTP, поэтому для других протоколов нужно использовать прямые SSL-соединения.

Как запустить SSL-сервер из командной строки?

Подкоманда s_server позволяет запустить сервер с поддержкой SSL прямо из командной строки; сервер предназначен только для проверки и отладки. Для полноценной работы рекомендуется использовать stunnel.

Подкоманда s_server работает намного лучше, если есть сертификат; когда его нет, её возможности сильно сокращаются.

Дайджесты

Создание дайджестов (криптографических контрольных сумм) с помощью подкоманды dgst — одна из наиболее распространённых задач, выполняемых с помощью openssl.

Как создавать дайджесты MD5 или SHA1?

Дайджесты создаются с помощью подкоманды dgst:

Дайджест MD5 эквивалентен дайджесту, создаваемому известной утилитой md5sum, хотя выводится в другом формате:

То же верно и для дайджестов SHA1 и программы sha1sum:

Как подписать дайджест?

Для того, чтобы быть уверенным, что дайджест никто не изменял, его можно подписать с помощью своего закрытого ключа.

Подписать дайджест SHA1 для файла foo-1.23.tar.gz:

Как проверить подписанный дайджест?

Для того чтобы проверить правильность дайджеста, нужен файл, на основе которого был получен дайджест, сам подписанный дайджест и открытый ключ того, кто подписывал дайджест:

Как создать запись типа digest для файла паролей Apache?

Формат базы паролей прост: список нескольких полей, разделённых двоеточиями. Поля:

  • имя пользователя (username);
  • область авторизации (authorization realm; AuthRealm);
  • MD5-суммы для этих полей и пароля.

Скрипт, представленный ниже, повторяет действие htdigest с той разницей, что выводит данные на стандартный поток вывода. Кроме того, он умеет считывать данные со стандартного потока ввода.

Какие ещё есть дайджесты?

Подкоманда list-message-digest-commands даёт список типов дайджестов, доступных в данной инсталляции.

Шифрование/расшифровка

Как закодировать что-то по методу base64?

Использовать опцию -base64.

Закодировать одну строку:

Без перевода строки (важно для паролей):

Опция -d выполняет обратный процесс (то есть, раскодирование):

Как зашифровать файл?

Простое шифрование файлов, вероятно, лучше делать инструментами типа GPG. Тем не менее, иногда может возникнуть необходимость зашифровать файл без развёртывания инфраструктуры ключей и сертификатов, а пользуясь одним только паролем. Второе, что нужно будет запомнить — это шифр, с помощью которого выполнялось шифрование.

Список поддерживаемых шифров есть на странице enc(1). Более просто (и более точно) узнать этот список у самой программы openssl.

Расшифровка файла на стороне получателя:

Можно не вводить парольную фразу постоянно при шифровании и расшифровке, а передавать её автоматически (подробнее: openssl(1); раздел "PASS PHRASE ARGUMENTS"). Формат аргумента прост:

Ошибки

В системных журналах обнаружились строки, которые, похоже, имеют отношение к OpenSSL или crypto:

В первом приближении определить, что не так, можно с помощью подкоманды errstr, которая умеет интерпретировать код ошибки. Код ошибки находится между "error:" и ":lib". В данном случае это 0407006A.

Ключи

Как сгенерировать ключ RSA?

Использовать подкоманду genrsa:

Как сгенерировать открытый ключ RSA?

С помощью подкоманды rsa можно создать открытую версию для закрытого ключа RSA:

Как сгенерировать ключ DSA?

Для построения ключей DSA нужен специальный файл параметров (parameter file), кроме того, операции с DSA медленнее чем аналогичные операции с RSA, в связи с этим, DSA используется не так часто, как RSA.

Если нужно сгенерировать только один ключ DSA, то это можно сделать одной командой, с помощью подкоманды dsaparam:

Если же нужно создавать несколько ключей DSA, перед тем как их генерировать, можно сделать общий файл параметров. Файл параметров генерируется сравнительно медленно, а файлы ключей очень быстро.

Как создать ключ, основанный на эллиптических кривых (elliptic curve key)?

Процедуры для работы с эллиптическими кривыми были добавлены в openssl, начиная с версии 0.9.8. Работа с этими процедурами выполняется через подкоманду ecparam.

Как создать открытый EC ключ?

С помощью подкоманды ec можно создать открытую версию для закрытого ключа EC (elliptic curve):

Как удалить парольную фразу у ключа?

Каждый раз, когда запускается демон, использующий ключ, надо будет набирать парольную фразу. Её можно убрать.

Допустим, ключ, зашифрованный парольной фразой, находится в файле key.pem; после выполнения команды расшифрованный ключ будет в newkey.pem:

Если закрытый ключ (private key) и открытый сертификат хранятся в одном файле, нужно будет выполнить две команды:

Хэши для паролей

С помощью подкоманды passwd можно генерировать хэши паролей, которые совместимы со стандартными хэшами из /etc/passwd, /etc/shadow или файла паролей Apache.

Как сгенерировать хэш в стиле crypt?

Сгенерировать хэш очень просто:

Если salt для пароля известен, можно воссоздать хэш.

Как сгенерировать хэш пароля в стиле shadow?

В новых UNIX/Linux-системах вместо старого crypt-хэша используется новый, более стойкий хэш MD5. Его генерирование выполняется с помощью ключа -1:

В этом формате salt состоит из 8 символов; он находится между вторым и третьим знаком $, в данном случае это sXiKzkus.

Простые числа

Поскольку openssl активно использует механизмы для работы с простыми числами, не удивительно, что в нём есть соответствующие процедуры. Начиная с версии 0.9.7e (или где-то так), в openssl появилась подкоманда binary.

Как проверить, является ли число простым?

Передать число как аргумент к подкоманде prime. Результат будет не в десятичном, а в шестнадцатеричном виде.

Можно проверять и шестнадцатеричные числа:

Как сгенерировать набор простых чисел?

Сгенерировать множество чисел и оставить только простые среди них. Для генерирования последовательностей удобно использовать seq.

Случайные данные

Как генерировать случайные данные?

Используйте подкоманду rand.

На UNIX/Linux-системах, в которых есть файл /dev/urandom, похожего эффекта можно добиться иначе, и иногда с лучшим результатом даже:

Между устройствами random и urandom есть разница. Дополнительная информация в random(4) для Linux и BSD или random(7D) для Solaris.

S/MIME

Много хороших примеров есть в smime(1).

Если сертификат не опознан, возникнет похожая ошибка:

Если нужно вытащить сертификат автора письма, для того, чтобы использовать его в дальнейшем, то нужна только первая часть команды:

Дальше этот сертификат можно или интегрировать в инфраструктуру OpenSSL, или сохранить его для будущего использования, например, такого:

Для того чтобы получить шифрование по умолчанию RC2-40 (оно, правда, слабое), нужно только сказать 'openssl, где находится сертификат:

Если есть уверенность, что на удалённой стороне есть современная поддержка SSL, можно использовать алгоритм шифрования посильнее чем DES:

Сегодня в дикой природе был анонсирован уязвимый OpenSSL-эксплойт, который позволяет злоумышленнику тайно обнаруживать и похищать приватные ключи сервера (позволяя им MitM и расшифровывать зашифрованные данные и воровать пароли). Это влияет на версии OpenSSL, включая 1.0.1f, которая является версией на моем современном Mac- компьютере Mavericks (потому что я использовал порт / brew для установки другого программного обеспечения, которое обновляло мой openssl, но я этого не осознавал ):

Это показывает, что я не использую версию OpenSL от Mavericks:

OpenSSL выпустил исправление сегодня в 1.0.1g, и мне интересно, как я могу установить эту исправленную версию поверх моей текущей версии?

Вы не используете версию, поставляемую с OS X Mavericks, - это 0.9.8y, в которой нет ошибки с ошибками (она была представлена ​​в 1.0.1). Ваш лучший путь обновления будет зависеть от того, где и как вы установили более новую версию. which openssl может быть информативным. Кроме того, основная проблема не в команде openssl, а в библиотеках openssl (которые используются другими программами) - они не совместимы с API между версиями 0.9.x и 1.0.x, поэтому вы не хотите обновлять поставляемые системой библиотеки openssl! @GordonDavisson - Вы совершенно правы. Я ошибался. Я, очевидно, установил MacPort в какой-то момент на эту машину, которая обновила мой openssl. (Вероятно, когда я пытался заставить работать Python2.7). Вероятно, следует удалить этот вопрос, но не в случае, если другие совершат ту же ошибку, найдут полезный ответ SapphireSun). С этим уточняющим обновлением я бы оставил это. Вероятно, в той же лодке есть другие люди, и наличие этого должно дать им представление о том, что нужно сделать. Если вы устанавливаете OpenSSL с brew, он не будет связывать двоичные файлы с / usr / bin. Поэтому он не будет запущен, если вы введете openssl в командной строке. @MaxRied как вы запускаете версию, установленную homebrew? Я установил новый openssl по инструкциям в принятом ответе и openssl version возвращает 1.0.1g, но вы говорите, что openssl команды не используют эту версию?

Если появится одна из плохих версий (1.0.1a-f), вы можете выяснить, какую версию openssl вы используете, следующим образом:

Часто это из / usr / bin. Чтобы убедиться, что вы получили обновленную версию, поместите символическую ссылку в / usr / local / bin, чтобы указать на обновленный openssl, например так:

В качестве альтернативы этому последнему шагу некоторые люди заменяют openssl /usr/bin символической ссылкой на /usr/local/Cellar/openssl/1.0.1g/bin/openssl (или любой другой версией):

Но это, как известно, вызывает проблемы с некоторыми более поздними версиями OSX. Лучше просто вставить новую символическую ссылку в / usr / local / bin, которая должна иметь приоритет на вашем пути над / usr / bin.

Не удаляйте оригинал - просто переименуйте его. Если вы обнаружите, что версия, созданная Homebrew, не работает для какой-то цели, нет никаких оснований ставить себе ручей без (рабочего) весла. Справедливо, но с другой стороны, я бы не назвал эту версию работающей . Даже с учетом этой уязвимости, она по-прежнему полезна для вас в любой ситуации, в которой вы готовы пойти на расчетный риск, чтобы приложение X (которое зависит от него) работало кратко. Или, если вы предпочитаете . «работать» в том смысле, что сломанная лопасть может толкнуть воду. :-p Лучше, чем создать символическую ссылку в /usr/bin/openssl , можно создать ссылку в /usr/local/bin/openssl . Это должно предшествовать /usr/bin вашей $PATH

Или для тех, кто использует порты Mac и не беспокоится о сохранении версии

Забавно, но на моем компьютере были установлены оба макпорта и brew с обоими установками openssl. Бег sudo port -f uninstall openssl @<old-version> сделал @yair, имеющий как macports, так и homebrew, вызовет много проблем

Временно настройте права доступа, /usr/local чтобы brew мог обновить:

Установите обновленную версию OpenSSL (вы, вероятно, хотите 1.0.2i):

Вы можете / должны удалить существующую символическую ссылку на openssl из /usr/local/bin :

Перепишите правильную версию напитка:

Восстановить исходные разрешения на /usr/local/bin :

В моем случае старая версия OpneSSL находится в / usr / bin. Сбой при попытке изменить разрешение бина. Да. Я использовал sudo. Я нашел комментарий, что в последней версии OS OS X нет способа изменить разрешение этого файла. Поэтому я перестаю добиваться этого. Почему бы просто не изменить свою $PATH переменную для поиска /usr/local/bin ? Привет всем, меня смущают все ответы, удаление символической ссылки, ссылки, ошибка с разбитым сердцем и т.д. . Когда я бегу, $ openssl version я получаю, OpenSSL 0.9.8zh 14 Jan 2016 но когда я бегу, $ brew install openssl я получаю Warning: openssl 1.0.2l is already installed . Значит ли это, что у меня установлены две версии? Что именно мне теперь делать?

Тот, кто не хочет использовать brew или порты и просто хочет заменить установку OpenSSL 0.9.8 по умолчанию, всегда может отключить защиту целостности системы, перезагрузившись в режим восстановления (cmd + R) и выполнив команду

а затем скомпилировать openssl с

Читайте также: