Недавно мимо меня пробегало новенькое израильское удостоверение личности (теудат зеут) - уже не бумажка, а смарткарта - и я, конечно, тут же его зацапал глянуть, что на ентой смарткарте есть. Мда. После потрошения ейного сертификата могу честно сказать - построено ужасно, просто ужасно.
Технические потроха:
1. Поле AIA - линк на службу проверки статуса сертификатов, OCSP:
http://va.igcas.gov.il/ocsp/ocsp.cgi
Такой хост DNS-у просто неизвестен, и служба, соответственно, недоступна.
Время жизни CRL - три дня. Что означает, если моё удостоверение покрано, то даже если МВД отзовёт сертификат немедленно - то может пройти полных три дня, пока он перестанет приниматься сторонами, проверяющими этот CRL.
2. Поле AIA - линк на вышестоящий сертификат выглядит так:
https://www.igcas.gov.il/cert/ilgov-res.authca-12-01.cer
Этим идиотам никто не объяснил, что использовать HTTPS для линков в AIA и CDP нельзя? Потому что может возникнуть логическая петля?
Да к тому же и линк битый.
То есть если у меня есть корневой сертификат, и мне надо проверить сертификат со смарткарты, а промежуточного у меня нет - то увы мне. Цепочку не выстроить.
Аналогичный линк с промежуточного на корневой:
https://www.igcas.gov.il/cert/ilgov-res-authrootca-12-01.cer
Опять HTTPS, но на этот раз хотя б линк не битый. Зато сервер отдаёт сертификат с неправильным MIME-type: text/html вместо application/x-x509-ca-cert.
3. Линки на CRL - их два:
В конечном:
http://crl.igcas.gov.il/crl/ilgov-res-authca-12-01.crl
http://crl2.igcas.gov.il/crl/ilgov-res-authca-12-01.crl
В промежуточном:
http://crl.igcas.gov.il/crl/ilgov-res-authrootca-12-01.crl
http://crl2.igcas.gov.il/crl/ilgov-res-authrootca-12-01.crl
Второй в паре - битый, хост crl2.igcas.gov.il на подключения не отвечает.
4. Линки на документы с policy:
В промежуточном:
https://cps.igcas.gov.il/cp/ilgov-res-authcert-v1.html
В корневом:
http://cps.igcas.gov.il/cp/ilgov-res-authcert-v1.html
Как ни странно, рабочие, хотя один из них с HTTPS, причём сайт оборудован неизвестным никому сертификатом, поэтому браузер выбрасывает ошибку. Впрочем, кто её читает, эту галиматью?
5. В поле SAN значится такое:
Principal Name=номер_ID@res.igcas.gov.il
Такой хост DNS-у неизвестен. Не то, чтобы это проблема, но жалко: можно было бы каждому сделать официальный мейлбокс или алиас.
6. Поле "Enhanced Key Usage":
Client Authentication
Smart Card Logon
А почему не Document Signing, к примеру? Да, шифровать ключом, у которого нет бэкапа, и впрямь не стоит - но почему не дать людям возможность документы подписывать, например?
7. Subject корневого выглядит вот так:
CN = Residents eID Root CA 12-01
OU = Population and Immigration Authority
O = Government of Israel
C = IL
А почему бы не произвезти его от главного государственного сертификата, тем более, что такой, похоже, есть: Government of Israel Root CA G2 (правда, эти кретины отдают его мало того, что в бинарном формате, так ещё и с кривым MIME-type)? Чтобы цепочку доверия можно было легче выстроить?
В общем, сработано халтурщиками, которым возможности и детали технологии совершенно пофигу, базовая функциональность есть - и слава богу. Скажу без ложной скромности, я бы лучше сделал.
Если кто хочет повтыкать в детали сам - припадайте. "Leaf" сертификат со смарткарты не выкладываю из соображений приватности владельца, а правительственные - на здоровье.