Ключ SSH для HTTP

A .deb файл является просто заархивированным и просмоленным файлом, как a .tar.bz2 или .tar.gz, таким образом, можно использовать tar разархивировать его. Захватите .deb Вы хотите установить, войти в каталог, в который Вы хотите расширенный, и просто tar xf /path/to/package.deb. Вы будете затем видеть три файла: debian-binary, который содержит (я верю), deb номер версии, control.tar.gz, который содержит метаданные и сценарии установки/удаления, и data.tar.gz, который содержит фактические файлы. Для извлечения файлов работать mkdir root; tar Cxf root data.tar.gz и у Вас будет структура каталогов в ./root это зеркально отражает структуру, где файлы были бы установлены в фактической файловой системе. Можно найти файл, который Вы ищете там.

Если Вы хотите весь установленный пакет, я очень настоятельно рекомендую, чтобы Вы использовали dpkg на самом деле устанавливать его (sudo dpkg -i /path/to/package.deb), поскольку это будет автоматически выполнять пред - и постустанавливать сценарии в случае необходимости, отслеживать то, что установлено, где, и позволяют Вам удалять его чисто и легко. Но если Вы действительно чувствуете потребность обойти все диспетчеры пакетов, можно использовать sudo tar Cxf / data.tar.gz извлечь файлы в дерево корневого каталога, которое должно поместить все, где оно предназначено для движения. Но действительно выполните или по крайней мере проверьте на preinst и postinst сценарии в control.tar.gz архив, чтобы видеть, необходимо ли сделать что-либо важное прежде или после установки.

1
20.06.2016, 20:03
2 ответа

То, что Вы ищете, называют Взаимной аутентификацией SSL.

В случае обычно развертываемого веб-сервера как Apache и также обычно развертываемая реализация SSL/TLS как OpenSSL, шаги были бы следующие:

Существует удобный сценарий, распределенный рядом openssl, CA.sh сделать большую часть этого материала. Его местоположение является конкретным распределением. В Debian и производных можно определить местоположение его использование:

# apt-file search CA.sh
openssl: /usr/lib/ssl/misc/CA.sh

И Redhat и производные (приблизительный) эквивалент:

# yum provides */CA
1:openssl-1.0.1e-4.fc18.x86_64 : Utilities from the general purpose cryptography library with TLS implementation
Repo        : @updates
Matched from:
Filename    : /etc/pki/tls/misc/CA

Это - очень простой сценарий удара, который упрощает создание структуры каталогов, должен был управлять CA (это описано в [ CA_default ] раздел openssl.cnf). Я рекомендую Вам использовать его и посмотреть на код для изучения то, что это на самом деле делает.

# ./CA.sh -help
usage: ./CA.sh -newcert|-newreq|-newreq-nodes|-newca|-sign|-verify

Этот сценарий будет использовать значения по умолчанию, обеспеченные в openssl.cnf, и/или можно обеспечить один конфигурационный файл как аргумент openssl $command использование -config переключитесь, не используя CA.sh. Местоположение openssl.cnf файл является также конкретным распределением, и можно использовать те же команды выше для нахождения его. Тот, который Вы хотите, является тем, обеспеченным openssl пакет.

Вы, вероятно, хотите изменить следующие разделы:

[ CA_default ]
default_days    = 365                   # how long to certify for
default_crl_days= 30                    # how long before next CRL

[ req ]
default_bits            = 2048

[ req_distinguished_name ]
countryName                     = Country Name (2 letter code)
countryName_default             = AU
countryName_min                 = 2
countryName_max                 = 2
stateOrProvinceName             = State or Province Name (full name)
stateOrProvinceName_default     = Some-State
localityName                    = Locality Name (eg, city)
0.organizationName              = Organization Name (eg, company)
0.organizationName_default      = Internet Widgits Pty Ltd
#1.organizationName             = Second Organization Name (eg, company)
#1.organizationName_default     = World Wide Web Pty Ltd
organizationalUnitName          = Organizational Unit Name (eg, section)
#organizationalUnitName_default =
commonName                      = Common Name (e.g. server FQDN or YOUR name)
commonName_max                  = 64
emailAddress                    = Email Address
emailAddress_max                = 64
  • Генерируйте CA

После того как Вы отредактировали openssl.cnf для соответствия потребностям можно генерировать сертификат CA. В зависимости от того, нужен ли Вам этот CA, подписанный распознанным сторонним CA или нет, можно генерировать самоподписанный CA или CSR, который будет отправлен для подписания.

./CA.sh -newca

Вам в интерактивном режиме предложат задать некоторые вопросы, значения по умолчанию появятся между квадратными скобками. Вы распознаете опции, в которых Вы изменили openssl.cnf здесь.

  • Генерируйте сертификат для сервера

Можно создать запрос сертификата на сервер с помощью того же сценария:

./CA.sh -newreq

Снова, Вам предложат задать несколько вопросов, самым важным является Общее название сертификата, который должен соответствовать DNS разрешимое название IP сервера (или можно использовать другие средства, как /etc/hosts, не рекомендуемый, трудно чтобы поддержать и масштабироваться)

То, что Вы получите, является Сертификатом, Подписывая Запрос (CSR, если коротко). Это будет подписано Центром сертификации (CA), который Вы создали прежде.

./CA.sh -sign

  • Генерируйте сертификаты для клиентов

Повторите шаги создания CSR и получения подписанного Приблизительно. При выполнении так, обратите пристальное внимание на то, как Вы заполняете Общее название, поля Organization и Organizational Unit, поскольку они будут требоваться впоследствии для конфигурирования сервера.

Аккуратный способ распределить клиентские сертификаты вместе с их соответствующими закрытыми ключами и сертификат CA использует пакеты p12:

openssl pkcs12 -export -in Certificates/client.pem -inkey client.key -certfile CA.pem -out clientcert.p12

  • Настройте сервер

Давайте предположим сервер, к которому Вы обращаетесь, веб-сервер Apache. После того как у Вас есть сертификат сервера, Вы настраиваете соответствующее VHOST для обслуживания безотносительно, содержание будет защищенным взаимной аутентификацией SSL. Пример мог быть этим phpmyadmin виртуальные хосты. Это работает в сервере Apache 2.4, поэтому не используйте его как есть и тщательно рассматривайте и тестируйте его для адаптации его к потребностям.

Listen                   443 https

<VirtualHost 120.120.120.120:443>
  DocumentRoot           "/srv/www/html"
  ServerAdmin            admin@company.com
  SSLCACertificateFile   /etc/pki/CA/cacert.pem
  SSLCertificateFile     /etc/pki/tls/private/company.com/newcert.pem
  SSLCertificateKeyFile  /etc/pki/tls/private/company.com/newkey.pem
  SSLCARevocationCheck   chain
  SSLCARevocationFile    /etc/pki/CA/crl/crl.pem
  SSLEngine              on
  SSLStrictSNIVHostCheck on
  SSLVerifyClient        require
  SSLVerifyDepth         5
  ServerName             phpmyadmin.company.com
  RewriteEngine          on
  RewriteCond            %{REMOTE_ADDR} !^127\.0\.0\.1$
  RewriteCond            %{HTTPS} !=on
  RewriteRule            . - [F]
  ErrorLog               "|/usr/sbin/rotatelogs -L /var/log/httpd/foo/error.log -f /var/log/httpd/foo/error.log.%Y%m%d 86400"
  CustomLog              "|/usr/sbin/rotatelogs -L /var/log/httpd/foo/access.log -f /var/log/httpd/foo/access.log.%Y%m%d 86400" logstash_json
  <Directory /usr/share/bar/>
    Require              ssl
    Require              ssl-verify-client
    SSLRequireSSL
    SSLOptions           +FakeBasicAuth +StrictRequire
    SSLRequire           %{SSL_CIPHER_USEKEYSIZE} >= 256
    SSLRequire           %{SSL_CLIENT_S_DN_O} eq "Awesome Company" \
                     and %{SSL_CLIENT_S_DN_OU} eq "Development" \
                     and %{SSL_CLIENT_S_DN_CN} in {"John Doe", "Jane Doe"}
    SSLRenegBufferSize   131072
  </Directory>
</VirtualHost>

Можно использовать в качестве многих на каталог управление доступом, как Вам нужно, важная часть - то, что клиентские показанные сертификаты должны выполнить ограничения, введенные SSLRequire директивы, т.е. они должны соответствовать Организации, Организационные условия Единицы и Общего названия (или другие поля сертификата, поскольку Вы считаете целесообразным). Эти поля взяты из клиентских сертификатов.

  • Генерируйте список аннулированных сертификатов

Чтобы смочь отклонить доступ к клиентскому сертификату, необходимо генерировать CRL. Команда, чтобы сделать это (предоставил Вам в вершине структуры каталогов CA):

openssl ca -config /path/to/openssl.cnf -gencrl -out crl/crl.pem

Впоследствии, Вы отменяете клиентские сертификаты по мере необходимости с помощью:

openssl ca -config /path/to/openssl.cnf -revoke clientcert.pem

Ссылки:

Онлайн-документация OpenSSL и онлайн-документация Apache.

4
27.01.2020, 23:15

Да, это называют "Клиентской Аутентификацией Сертификата" и часто используют со Смарт-картами и т.п..

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

2
27.01.2020, 23:15

Теги

Похожие вопросы