понедельник, 6 мая 2013 г.

openssl certs


CA

openssl ecparam -name secp521r1 -out ec521.param

openssl genpkey -paramfile ec521.param -out root-ca.key

openssl ec -in root-ca.key -noout -text

openssl ec -aes-256-ecb -in root-ca.key -out root-ca-aes.key

Генерируем приватный ключ:


openssl genpkey -out some.key -algorithm RSA -pkeyopt  rsa_keygen_bits:2048

создаем кофигурационный файл req.conf:
[req]
default_md  = sha256
utf8        = yes
prompt      = no
distinguished_name  = req_dn

[req_dn]
countryName = UK
organizationName = ECMA Ltd
organizationalUnitName  = WWW
commonName  = www.ecma.com



Генерируем запрос на сертификат: 

 
openssl req -new -key some.key -config req.conf -out some.csr
 
Проверить содержимое:
 
openssl req -in mycsr.csr -noout -text 
 
Конфигурационный файл для подписи ca_serv.conf: 
[default]
default_ca  = ca_root

[x509_extensions]
basicConstraints        = critical,CA:false
keyUsage                = critical,digitalSignature,keyEncipherment
subjectKeyIdentifier    = hash

[ca_root]
home            = .
database        = $home/db/index
serial          = $home/db/serial
crlnumber       = $home/db/crlnumber
certificate     = $home/private/ca-root.crt
private_key     = $home/private/ca-root.key
RANDFILE        = $home/private/random
new_certs_dir   = $home/certs
unique_subject  = no
copy_extensions = copy
default_days    = 365
default_crl_days    = 365
default_md      = sha256
policy          = policy_c_o_match

[policy_c_o_match]
countryName = match
stateOrProvinceName = optional
organizationName    = match
organizationalUnitName  = optional
commonName  = supplied
emailAddress    = optional 
 
подписываем на CA машине: 

openssl ca -out host.crt -in some.csr -config ca_serv.conf -extensions x509_extensions

проверяем

openssl x509 -in host.crt -noout -text

 

http://pages.cs.wisc.edu/~zmiller/ca-howto/




http://www.madboa.com/geek/openssl/#cert-exam

воскресенье, 30 декабря 2012 г.

Проверка сервера через сертификаты

Итак, я пересаживаюсь на новую машину, захожу по ssh на сервер и вижу знакомую надпись:

authenticity of this host is can`t be established
key fingerprint is xxxxxxxxxxxx
are you sure?

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

Можно хранить фингерпринты где-нибудь в интернете, в доступном месте. Можно завести dns-записи, но для этого нужен свой dns-сервер, ибо я еще не видел сервисов умеющих заводить их. И, наконец, можно подписать ключи серверов ключом центра авторизации, и тогда на клиентской машине нужно будет добавить только одну строчку в known_hosts и мы автоматически начинаем доверять всем своим серверам.

создаем ключ CA

ssh-keygen -t ecdsa -f /etc/ssh/ca-key

при этом создается обычная пара ssh ключей: ca-key (приватный) и ca-key.pub (открытый, он нам понадобится на клиентских машинах)

подписываем хост-ключи сервера

ssh-keygen -s /etc/ssh/ca-key -h -I server.com /etc/ssh/ssh_host_ecdsa_key.pub

получаем файл /etc/ssh/ssh_host_ecdsa_key-cert.pub

настраиваем sshd

в файле /etc/ssh/sshd_config добавляем строку

HostCertificate /etc/ssh/ssh_host_ecdsa_key-cert.pub

перезапускаем ssh

настраиваем клиент

содержимое ca-key.pub (это одна строка) копируем в known_hosts. В начале этой строки добавляем @cert-authority server_name

при этом ключи самого сервера добавлять не нужно.

таким образом подписав нашим ca-key ключи всех серверов, мы сможем проверять валидность их ключей без изменения known-hosts

понедельник, 6 августа 2012 г.

загрузочная флешка с линуксом

Вчера встала задача поднять вайфай на ноутбуке. Система стояла openbsd, в которой драйверов на карточку нету даже в планах. Проводная сеть работает. Под линукс нужные дрова есть. Остается загрузить линукс. Сидирома нет - исошки не прокатят. Пытаюсь найти образ загрузочной флешки (кстати, с опенбсд такая нашлась на первой странице гугла), но везде только инструкции, как создать ее самому. Для создания требуются утилиты, которые под опенкой не работают/отсутствуют.

Вобщем, сплошное разочарование :( Вайфая я так и не получил.

Сегодня, придя на работу, первым делом создал загрузочную флешку с установочным образом генты.

выкладываю тут на всякий случай - gentoo_usb.img

для заливки - dd if=gentoo_usb.img of=/dev/sdc

или как там флешка определилась. флешка нужна на 500 мб или больше

и для лучшего поиска - gentoo liveusb flash скачать, без смс, без регистрации :)

вторник, 31 июля 2012 г.

panic in ghc

Написал маленький но полезный скрипт на хаскеле. И он прекрасно компилировался и работал на домашнем буке. Но после копирования на рабочую машину ghc сказал:
$ ghc
ghc: panic! (the 'impossible' happened)
  (GHC version 6.12.3 for i386-unknown-openbsd):
        too few bytes. Failed reading at byte position 10861
 
Оно, конечно, дома то уже 7-ая версия стоит, и я подумал, а не изменился ли синтаксис?
Но попытка скомпилировать программу с одной строчкой и той контстантой не привела к успеху
 
Зато как обычно гугл почти сразу дал ответ - 
надо почистить ~/.ghc
Похоже туда он сваливает временные файлы для ускорения компиляции и после обновления системы формат их изменился

четверг, 26 апреля 2012 г.

заведение виртуального почтового ящика

используются exim + courier imapd

в /etc/exim/auths добавляем строку:

vmailbox@vdomain: password

в /etc/exim/domains/vdomain добавляем строку:

vmailbox

(пожалуй, этот вместо этого можно использовать файл с паролями, но я скорее перейду на ldap)

Теперь imap.

создаем папку для ящика:

mkdir /home/vdomain/vmailbox

генерируем структуру:

maildirmake /home/vdomain/vmailbox

выставляем права:

chmod -R vdomain:vdomain /home/vdomain/vmailbox

добавляем запись в базу паролей:

userdb "vmailbox@vdomain" set home=/home/vdomain mail=/home/vdomain/vmailbox uid=vdomain gid=vdomain

задаем пароль:

userdbpw -md5 | userdb "vmailbox@vdomain" set imappw   - для IMAP

userdbpw -md5 | userdb "vmailbox@vdomain" set pop3pw  - для POP3

компилируем базу паролей:

makeuserdb

в последних версиях OpenBSD почему-то makeuserdb ругается No such file or directory
это лечится через

ln -s /usr/local/libexec/makedatprog /usr/local/libexec/courier-authlib/

ну или сам скрипт makeuserdb поправить - он на перле

воскресенье, 30 октября 2011 г.

ipsec на openbsd

Генерация приватного ключа для isakmpd:
#openssl genrsa -out /etc/isakmpd/private/local.key 1024
#sudo chmod 600 /etc/isakmpd/private/local.key

суббота, 9 апреля 2011 г.

забытый пароль для hp6983

когда-то давно этот принтер был установлен и замечательно работал. Но понадобилось его поставить в другую сеть и опа: пароль то я забыл. Перепробовал все свои пароли, какие смог вспомнить (а сменил я их немало за последние пару лет), но ни один не подошел.
Тут я решил почитать мануал. Нашел процедуру сброса к заводским настройкам, уверявшую, что ипароль станет пустым. Но не тут то было: проделав оную процедуру неоднократно, я убедился что сброс происходит, но сбрасывается все кроме пароля.
Погуглив нашел что пароль для хп-шных принтсерверов сбраывается холодной перезагрузкой. Что это такое там правда не было описано. Перепробывав различные варианты вкл/выкл с зажатыми кнопками, понял что надо искать волшебную кнопку.
Внешний осмотр результата не дал. Разобрал (кстати тот еще квест). Внутри тоже ничего :(
Снова гугл. Теперь не по моей модели, а по семейству. И вот оно: официальный ответ хп - "сброс пароля невозможен"
Но дальше добрые люди подсказывают, что в числе диагностических печатей есть дамп прошивки, в котором пароль лежит в открытом виде. Для этого зажимаем кнопку вкл, нажимаем кнопку отмены 1 раз, кнопку прогона бумаги 2 раза, отпускаем кнопку вкл, и любуемся 2 листами дампа. У меня пароль нашелся по смещению 040007.

так же другие варианты нажатий:
> Test pages
> Press and hold POWER.
> Press "X" (Cancel Print) the specified number of times
> Press RESUME/FF the specified number of times.
> Release POWER
> X RESUME/FF Results
> 0 1 Flower picture (head first)
> 0 3 Alignment (calibration page)
> 0 4 P/C, Page count (diagnostic page)
> 0 7 Paper-indent-exactness?
> 0 8 Infinite "H" test
> 1 1 P/C, Page count, Paper-sizing-dates
> 1 2 ROM-Dump, P/C, Alignment-dates
> 2 0 Pen recovery diagnostic test: light
> cartridge cleaning
> 2 1 Pen recovery diagnostic test:
> Intermediate cleaning
> 2 2 Pen recovery diagnostic test: Intensive
> cleaning
> 3 0 Duplex test
> 3 1 Duplex test on 970Cxi
> 3 1 Flower picture continued
> 4 1 Cartridges identification-dates / filler
> situation
> 8 4 Nozzle pattern test