Firefox 无法识别使用 certutil 添加的 CA 证书
Firefox not recgonising CA cert added with certuil
我正在尝试以编程方式在新安装的 ubuntu 18.04 上接受 CA 证书。
当我 运行 这个脚本时,用户没有 ~/.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
但是,如果我尝试使用 CA 浏览站点,我会收到无效证书错误:
Error code: 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。
解决方案是在 certDir 前加上 sql:
certutil -A -n "${certificateName}" -t "TCu,Cu,Tu" -i "${certificateFile}" -d "sql:${certDir}"
我正在尝试以编程方式在新安装的 ubuntu 18.04 上接受 CA 证书。
当我 运行 这个脚本时,用户没有 ~/.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
但是,如果我尝试使用 CA 浏览站点,我会收到无效证书错误:
Error code: 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。
解决方案是在 certDir 前加上 sql:
certutil -A -n "${certificateName}" -t "TCu,Cu,Tu" -i "${certificateFile}" -d "sql:${certDir}"