Создание, подписание и развертывание сертификатов в системе Ubuntu 14 с помощью certtool

Я пытаюсь узнать о создании сертификата, подписи и что нужно, чтобы стать центром сертификации.

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

Мне нужно создать динамические сертификаты для доменов, просматриваемых в браузере на HTTP-прокси, которые я разрабатываю на 64-битной машине Ubuntu 14. Я хочу, чтобы хром работал плавно при просмотре различных сайтов.

Что я сделал до сих пор:

  1. Создан ключ и самозаверяющий сертификат для CA с помощью приведенных ниже команд.

    certtool --generate-privkey --outfile ca-key.pem
    certtool --generate-self-signed --template cert.cfg --load-privkey ca-key.pem --outfile ca-cert.pem
    
  2. Явно установите сертификат CA в системном хранилище сертификатов.

  3. Преобразовал сертификат pem в crt используя команду ниже

    openssl x509 -in ca-cert.pem -inform PEM -out ca-cert.crt
    

    (Мне нужно найти соответствующую команду в certtool)

  4. Потом скопировал ca-cert.crt подать в /usr/share/ca-certificates/extra путь и выполняется ниже команды, чтобы явно установить сертификат в системе.

    sudo dpkg-reconfigure ca-certificates
    

    С этим я получаю системное окно, я выбираю ca-cert.crt и нажмите Ok, чтобы явно установить сертификат в системе. Насколько я понимаю, поскольку ca-cert.crt явно установлен в системе, любые другие сертификаты, подписанные этим ca-cert и ca-key, будут доверяться системе (кроме приложений, использующих свое собственное хранилище сертификатов, такое как firefox).

  5. Затем я создал ключ для HTTP-прокси, используя следующую команду:

    certtool --generate-privkey --outfile key.pem
    
  6. Затем я создал csr для HTTP-прокси, используя команду ниже.

    certtool --generate-request --load-privkey key.pem --template cert.cfg --outfile request.pem*
    
  7. Затем я подписал CSR с помощью команды ниже.

    certtool --generate-certificate --load-request request.pem --load-ca-certificate ca-cert.pem --load-ca-privkey ca-key.pem --template cert.cfg --outfile cert.pem
    

Наконец у меня есть cert.key и cert.pem. Теперь эти файлы сертификатов используются для связи между браузером и моим HTTP-прокси.

Я вижу, что Chrome не показывает полученное содержимое. Однако, если я начну Chrome с ignore-certificate-errors режим, то Chrome работает нормально и правильно отображает контент на сайте.

Может кто-нибудь подсказать мне, что я делаю неправильно, из-за чего Chrome не показывает полученное содержимое?

1 ответ

Вы смотрели на файл шаблона cert.cfg? Это же имя файла встречается в двух разных вызовах certtoolгде цели звонков дополняют друг друга.

Убедитесь, что шаблон одинаков в обоих случаях. В частности, вы должны обратить внимание на ca-инструкция в каждом файле, чтобы убедиться, что они совпадают.

Другие вопросы по тегам