是否可以在Firefox上列出已安装的证书?

时间:2017-06-05 20:41:36

标签: python selenium selenium-webdriver

我需要获取/列出Mozilla Firefox上安装的所有证书。我想知道是否可以使用Selenium webdriver管理它。

我找到了this answer以及存储证书的文件:

%appdata%/Mozilla/Firefox/<user.profile>/cert8.db

但是我无法解析这种文件格式。那么,是否可以使用Selenium在Firefox上安装所有证书?

1 个答案:

答案 0 :(得分:1)

您可以使用Mozilla的certutil工具来读取数据库。请注意,如果在命令提示符下运行certutil,则将运行Windows certutil,而不是Mozilla。

要运行Mozilla的certutil,您需要从其存储库下载网络安全服务(NSS),此处:

https://ftp.mozilla.org/pub/security/nss/releases/

但是NSS包需要NSPR dll才能正常运行。不确定为什么从NSPR v4.6.2提前所有软件包都只是源软件包,没有所需的dll,所以直接进入v4.6.1链接并下载丢失的dll的压缩文件。

http://ftp.mozilla.org/pub/nspr/releases/v4.6.1/

certutil.exe和dll放在同一个文件夹中后,运行以下命令:

certutil.exe -L -d %appdata%\Mozilla\Firefox\Profiles\<profile_folder_name_here>

其中:

  • -L:列出所有证书
  • -d:指定包含证书和密钥数据库文件的数据库目录

有关其他certutil命令,请参阅此处:

https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/tools/NSS_Tools_certutil

Python脚本示例如下:

import subprocess
import os

ff_prof_path = '{}\\Mozilla\\Firefox\\Profiles\\'.format(os.environ['APPDATA'])
ff_prof_path = '{}{}'.format(ff_prof_path, os.listdir(ff_prof_path)[0])
result = subprocess.run('certutil -L -d {}'.format(ff_prof_path), stdout=subprocess.PIPE)
print(result.stdout.decode('utf-8'))