Firefox не восстанавливается сертификат CA, добавленный с certuil - PullRequest
0 голосов
/ 01 апреля 2020

Я пытаюсь программно принять сертификат CA на только что установленном Ubuntu 18.04.

У пользователя нет папки ~ / .mozilla, когда я запускаю этот скрипт.

sudo apt install libnss3-tools

rm -rf /home/${USER}/.mozilla/

installId="4F96D1932A9F858E" # hash of firefox install location
defaultProfileId=$(openssl rand -hex 4)
releaseProfileId=$(openssl rand -hex 4)

certificateFile="/home/${USER}/hcp-ca-cert.pem"
certificateName="HCP CA Cert"

#########

certDir="/home/${USER}/.mozilla/firefox/${defaultProfileId}.default"
mkdir -p $certDir
certutil -A -n "${certificateName}" -t "TCu,Cu,Tu" -i "${certificateFile}" -d "${certDir}"

certDir="/home/${USER}/.mozilla/firefox/${releaseProfileId}.default-release"
mkdir -p $certDir
certutil -A -n "${certificateName}" -t "TCu,Cu,Tu" -i "${certificateFile}" -d "${certDir}"

#########

cat << EOF >> /home/${USER}/.mozilla/firefox/profiles.ini
[Install${installId}]
Default=${defaultProfileId}.default
Locked=1

[Profile1]
Name=default
IsRelative=1
Path=${defaultProfileId}.default
Default=1

[Profile0]
Name=default-release
IsRelative=1
Path=${releaseProfileId}.default

[General]
StartWithLastProfile=1
Version=2
EOF

#########

cat << EOF >> /home/${USER}/.mozilla/firefox/installs.ini
[${installId}]
Default=${releaseProfileId}.default-release
Locked=1
EOF

При этом создаются профили, например,

ubuntu@ip-10-1-0-121:~$ certutil -L -d .mozilla/firefox/d8cfb77c.default/

Certificate Nickname                                         Trust Attributes
                                                             SSL,S/MIME,JAR/XPI

HCP CA Cert                                                  CT,C,c

и

ubuntu@ip-10-1-0-121:~$ certutil -L -d .mozilla/firefox/d8cfb77c.default/

Certificate Nickname                                         Trust Attributes
                                                             SSL,S/MIME,JAR/XPI

HCP CA Cert                                                  CT,C,c

Однако, если я пытаюсь просмотреть сайт с помощью ЦС, я получаю ошибочный сертификат ошибки:

Код ошибки: SEC_ERROR_UNKNOWN_ISSUER

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


Обновление:

Глядя на время доступа к файлу, кажется, что когда я открываю firefox, он создает новый файл 'cert9.db':

ubuntu@ip-10-1-0-121:~$ ll .mozilla/firefox/bf0a1f94.default-release/*.db
-rw------- 1 ubuntu ubuntu 65536 Apr  1 09:12 .mozilla/firefox/bf0a1f94.default-release/cert8.db
-rw------- 1 ubuntu ubuntu 16384 Apr  1 09:12 .mozilla/firefox/bf0a1f94.default-release/key3.db
-rw------- 1 ubuntu ubuntu 16384 Apr  1 09:12 .mozilla/firefox/bf0a1f94.default-release/secmod.db

и

ubuntu@ip-10-1-0-121:~$ ll .mozilla/firefox/d8cfb77c.default/*.db
-rw------- 1 ubuntu ubuntu  65536 Apr  1 09:12 .mozilla/firefox/d8cfb77c.default/cert8.db
-rw------- 1 ubuntu ubuntu 229376 Apr  1 09:33 .mozilla/firefox/d8cfb77c.default/cert9.db
-rw------- 1 ubuntu ubuntu  16384 Apr  1 09:12 .mozilla/firefox/d8cfb77c.default/key3.db
-rw------- 1 ubuntu ubuntu 294912 Apr  1 09:33 .mozilla/firefox/d8cfb77c.default/key4.db

Размер файла cert9 говорит о том, что он включает в себя несколько CA.

1 Ответ

0 голосов
/ 01 апреля 2020

Решением было префикс certDir с sql:

certutil -A -n "${certificateName}" -t "TCu,Cu,Tu" -i "${certificateFile}" -d "sql:${certDir}"
...