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
архив, чтобы видеть, необходимо ли сделать что-либо важное прежде или после установки.
То, что Вы ищете, называют Взаимной аутентификацией 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
После того как Вы отредактировали 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
Ссылки:
Да, это называют "Клиентской Аутентификацией Сертификата" и часто используют со Смарт-картами и т.п..
Это может быть сложно для получения выполнения хорошо, в зависимости от того, каков желаемый продукт.