Czy istnieje sposób programowo zainstalować certyfikat w mozilla? Staramy się napisać wszystko, aby wyeliminować odchylenia w środowisku, więc instalowanie go ręcznie za pomocą preferencji mozilla nie działa na nasze potrzeby. Zakładam, że istnieje sposób, aby to zrobić z certutil, ale nie mam pewności co do wewnętrznych elementów Mozilli, itp.Programowo zainstaluj certyfikat w Mozilli
Odpowiedz
Najprostszym sposobem jest zaimportowanie certyfikatu do przykładowego profilu firefox, a następnie skopiowanie cert8.db do pliku użytkowników, których chcesz wyposażyć w certyfikat.
Najpierw ręcznie zaimportuj certyfikat do profilu firewalla przykładowego użytkownika. Skopiuj
/home/${USER}/.mozilla/firefox/${randomalphanum}.default/cert8.db
(Linux/Unix)%userprofile%\Application Data\Mozilla\Firefox\Profiles\%randomalphanum%.default\cert8.db
(Windows)
do użytkowników firefox-profile. to jest to! Jeśli chcesz się upewnić, że nowi użytkownicy otrzymują certyfikat automatycznie, skopiuj cert8.db
do:
/etc/firefox-3.0/profile
(Linux/Unix)%programfiles%\firefox-installation-folder\defaults\profile
(Windows)
Bingo. Teraz, gdy już wiem, gdzie jest certyfikat, mogę użyć certyfikatu certutil. Dziękuję Ci. – PHeath
Nie ma łatwiejszego sposobu. Firefox działa po czystej instalacji. Jeśli baza certyfikatów w pliku "cert8.db" zostanie usunięta, zostanie zregenerowana podczas następnego uruchomienia Firefoksa. To zdecydowanie sugeruje, że istnieje ogólnosystemowe domyślne przechowywanie certyfikatów CA. Kod źródłowy Firefoksa [pokazuje] (https://github.com/mozilla/gecko-dev/blob/master/security/nss/lib/ckfw/builtins/Makefile#L52), że wbudowane certyfikaty CA są w rzeczywistości zakodowane na stałe w pliku wykonywalnym 'firefox'. Znajdują się w [security/nss/lib/ckfw/builtins/certdata.txt] (https://github.com/mozilla/gecko-dev/blob/master/security/nss/lib/ckfw/builtins/certdata.txt) – yanychar
Dla mac, został zlokalizowany tutaj:/Users/$ {USER}/Library/Application Support/Firefox/Profiles/hpc6g9rx.default/cert8.db –
Oto alternatywny sposób, który nie zastępuje istniejących certyfikatów: [fragment basha dla systemów Linux]
certificateFile="MyCa.cert.pem"
certificateName="MyCA Name"
for certDB in $(find ~/.mozilla* ~/.thunderbird -name "cert8.db")
do
certDir=$(dirname ${certDB});
#log "mozilla certificate" "install '${certificateName}' in ${certDir}"
certutil -A -n "${certificateName}" -t "TCu,Cuw,Tuw" -i ${certificateFile} -d ${certDir}
done
Możesz znaleźć certutil w pakiecie libnss3-tools (debian/ubuntu).
Patrz także:
https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/tools/NSS_Tools_certutil
Chciałbym podziękować za to podejście, które działało dobrze dla mnie, być całkowicie zautomatyzowane i nie zastępuje istniejących certyfikatów. Powinna być przyjęta odpowiedź – erjoalgo
W Windows 7 z Firefoksa 10, plik cert8.db jest przechowywany w %userprofile%\AppData\Roaming\Mozilla\Firefox\Profiles\########.default\cert8.db
. Jeśli jesteś administratorem, prawdopodobnie możesz napisać prostą aplikację WMI, aby skopiować plik do odpowiedniego folderu użytkownika.
Również to rozwiązanie, które pracował dla mnie z http://www.appdeploy.com/messageboards/tm.asp?m=52532&mpage=1&key=촴
Skopiowane
CERTUTIL.EXE
z pliku zip NSS (http://www.mozilla.org/projects/security/pki/nss/tools/) doC:\Temp\CertImport
(umieściłem również certyfikaty Chcę tam importować)Skopiowano wszystkie biblioteki dll z pliku zip NSS do
C\:Windows\System32
Utworzono plik BAT w
%Appdata%\mozilla\firefox\profiles
z tym scr ipt ...Set FFProfdir=%Appdata%\mozilla\firefox\profiles Set CERTDIR=C:\Temp\CertImport DIR /A:D /B > "%Temp%\FFProfile.txt" FOR /F "tokens=*" %%i in (%Temp%\FFProfile.txt) do ( CD /d "%FFProfDir%\%%i" COPY cert8.db cert8.db.orig /y For %%x in ("%CertDir%\Cert1.crt") do "%Certdir%\certutil.exe" -A -n "Cert1" -i "%%x" -t "TCu,TCu,TCu" -d . For %%x in ("%CertDir%\Cert2.crt") do "%Certdir%\certutil.exe" -A -n "Cert2" -i "%%x" -t "TCu,TCu,TCu" -d . ) DEL /f /q "%Temp%\FFProfile.txt"
Wykonał plik BAT z dobrymi wynikami.
dzięki człowiek wielki soln – Lanaru
Miałem podobny problem na stronie klienta, gdzie klient wymagał, aby certyfikat urzędu był instalowany automatycznie dla ponad 2000 użytkowników systemu Windows.
Utworzono następujący skrypt .vbs do zaimportowania certyfikatu do bieżącego zalogowanego sklepu certyfikatów firefox użytkowników.
Skrypt należy umieścić w katalogu zawierającym roboczą kopię pliku certutil.exe (wersja nss), ale programowo określa lokalizację profili firefox.
Option Explicit
On error resume next
Const DEBUGGING = true
const SCRIPT_VERSION = 0.1
Const EVENTLOG_WARNING = 2
Const CERTUTIL_EXCUTABLE = "certutil.exe"
Const ForReading = 1
Dim strCertDirPath, strCertutil, files, slashPosition, dotPosition, strCmd, message
Dim file, filename, filePath, fileExtension
Dim WshShell : Set WshShell = WScript.CreateObject("WScript.Shell")
Dim objFilesystem : Set objFilesystem = CreateObject("Scripting.FileSystemObject")
Dim certificates : Set certificates = CreateObject("Scripting.Dictionary")
Dim objCertDir
Dim UserFirefoxDBDir
Dim UserFirefoxDir
Dim vAPPDATA
Dim objINIFile
Dim strNextLine,Tmppath,intLineFinder, NickName
vAPPDATA = WshShell.ExpandEnvironmentStrings("%APPDATA%")
strCertDirPath = WshShell.CurrentDirectory
strCertutil = strCertDirPath & "\" & CERTUTIL_EXCUTABLE
UserFirefoxDir = vAPPDATA & "\Mozilla\Firefox"
NickName = "Websense Proxy Cert"
Set objINIFile = objFilesystem.OpenTextFile(UserFireFoxDir & "\profiles.ini", ForReading)
Do Until objINIFile.AtEndOfStream
strNextLine = objINIFile.Readline
intLineFinder = InStr(strNextLine, "Path=")
If intLineFinder <> 0 Then
Tmppath = Split(strNextLine,"=")
UserFirefoxDBDir = UserFirefoxDir & "\" & replace(Tmppath(1),"/","\")
End If
Loop
objINIFile.Close
'output UserFirefoxDBDir
If objFilesystem.FolderExists(strCertDirPath) And objFilesystem.FileExists(strCertutil) Then
Set objCertDir = objFilesystem.GetFolder(strCertDirPath)
Set files = objCertDir.Files
For each file in files
slashPosition = InStrRev(file, "\")
dotPosition = InStrRev(file, ".")
fileExtension = Mid(file, dotPosition + 1)
filename = Mid(file, slashPosition + 1, dotPosition - slashPosition - 1)
If LCase(fileExtension) = "cer" Then
strCmd = chr(34) & strCertutil & chr(34) &" -A -a -n " & chr(34) & NickName & chr(34) & " -i " & chr(34) & file & chr(34) & " -t " & chr(34) & "TCu,TCu,TCu" & chr(34) & " -d " & chr(34) & UserFirefoxDBDir & chr(34)
'output(strCmd)
WshShell.Exec(strCmd)
End If
Next
WshShell.LogEvent EVENTLOG_WARNING, "Script: " & WScript.ScriptFullName & " - version:" & SCRIPT_VERSION & vbCrLf & vbCrLf & message
End If
function output(message)
If DEBUGGING Then
Wscript.echo message
End if
End function
Set WshShell = Nothing
Set objFilesystem = Nothing
Po prostu chciałem dodać do starego wątku, aby pomóc innym ludziom. Potrzebowałem programowo dodać cert do bazy firefox przy użyciu GPO, to było jak to zrobiłem dla Windows
1, najpierw pobierz i rozpakuj prekompilowanego firefox NSS nss-3.13.5-nspr-4.9.1-compiled-x86.zip
2 Dodaj cert ręcznie do opcji firefox -> zaawansowane - Certyfikaty -> Instytucje -> Importuj
3, z pobranego pakietu NSS uruchom
certutil -L -d c:\users\[username]\appdata\roaming\mozilla\firefox\[profile].default
4, powyższe zapytanie pokaże nazwę certyfikatu i zaufanie np Atrybuty
my company Ltd CT,C,C
5, Usuń certyfikat w kroku 2. Opcje -> Zaawansowane - Certyfikaty -> Instytucje -> Usuń
6, należy utworzyć skryptu powershell na podstawie informacji z kroku 4 w następujący sposób . Ten skrypt otrzyma ścieżkę profilu użytkownika i doda certyfikat. Funkcja ta działa tylko wtedy, gdy użytkownik ma jeden profil Firefox (trzeba jakoś odzyskać użytkowników Firefoksa nazwę profilu folder)
#Script adds Radius Certificate to independent Firefox certificate store since the browser does not use the Windows built in certificate store
#Get Firefox profile cert8.db file from users windows profile path
$ProfilePath = "C:\Users\" + $env:username + "\AppData\Roaming\Mozilla\Firefox\Profiles\"
$ProfilePath = $ProfilePath + (Get-ChildItem $ProfilePath | ForEach-Object { $_.Name }).ToString()
#Update firefox cert8.db file with Radius Certificate
certutil -A -n "UK my company" -t "CT,C,C" -i CertNameToAdd.crt -d $ProfilePath
7, Tworzenie GPO jako Konfiguracja użytkownika, aby uruchomić skrypt PowerShell
nadzieję, że pomoże zaoszczędzić ktoś czas
Dzięki. Twoje rozwiązanie działa poprawnie dla naszych maszyn Windows. Oprócz swojej odpowiedzi certutil może używać ścieżek sieciowych dla pliku certyfikatu i profilu. – ozy
Próbowałem osiągnąć to samo w Powershell i napisałem skrypt do wykonywania różnych funkcji, które można interaktywnie wybrać. Oczywiście, dość łatwo jest zmodyfikować skrypt, aby zautomatyzować pewne rzeczy zamiast dostarczać opcji.
Jestem facetem infrastruktury, a nie programistą/programistą, więc przepraszam, jeśli jest trochę uciążliwy (ale działa!).
Zapisz poniższe jako PS1:
##################################################################################################
#
# NAME: RegisterFireFoxCertificates.ps1
#
# AUTHOR: Andy Pyne
#
# DATE : 22.07.2015
#
# COMMENT: To provide options for listing, adding, deleting and purging
# FireFox Certificates using Mozilla's NSS Util CertUtil
# Source: https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/tools/NSS_Tools_certutil
#
# NOTE: You need a copy of the NSS Util CertUtil and it's associated dll's
# The specific files I used were:
#
# certutil.exe, fort32.dll, freebl3.dll, libnspr4.dll, libplc4.dll, libplds4.dll, nspr4.dll,
# nss3.dll, nssckbi.dll, nssdbm3.dll, nssutil3.dll, plc4.dll, plds4.dll, smime3.dll,
# softokn3.dll, sqlite3.dll, ssl3.dll, swft32.dll
#
##################################################################################################
##################################################################################################
# Setup a few parameters
$ErrorActionPreference = "Silentlycontinue"
$ExecutionPolicyOriginal = Get-ExecutionPolicy
$FireFoxExecutable = "C:\Program Files (x86)\Mozilla Firefox\Firefox.exe"
# This is the Firefox certificate database
$CertDB = "Cert8.db"
# The Certificate Nickname is a name you want to see on the certificates that you've imported in - so you know they were imported by this process
# However, when you look at the certificates in Firefox, they will be listed under whatever the certificate name was when it was generated
# So if your certificate is listed as 'Company123' when imported, it will still be called that as the Common Name, but when you click to view
# it, you will see that the first item in the Certificate Fields is what you 'nicknamed' it.
$CertificateNickname = "MyCompanyName FF AutoImport Cert"
# The Legacy Certificates are specific/explicit certificates which you wish to delete (The 'purge' option later in the script references these items)
$LegacyCertificates = @("OldCertificate1", "Company Cert XYZ", "Previous Company name", "Unwanted Certificate - 7", "123APTEST123")
# This is the list of databases/Firefox profiles on the machine
$FFDBList = @()
# Making sure our temporary directory is empty
$FFCertLocationLocal = "C:\FFCertTemp"
# The remote location of the certificates and
$FFCertLocationRemote = "\\myUNC\NETLOGON\FireFoxCert\"
# The local CertUtil executable (this is copied from the remote location above)
$FFCertTool = "$FFCertLocationLocal\CertUtil.exe"
# Making sure our temporary directory is empty
Remove-Item $FFCertLocationLocal -Recurse
New-Item -ItemType Directory -Path $FFCertLocationLocal
##################################################################################################
##################################################################################################
Clear
# We're going to get a list of the Firefox processes on the machine that are open and close them
# Otherwise the add/delete parts might not be successful with Firefox still running
$FireFoxRunningProcessesList = Get-Process | Where-Object {$_.Name -Match "FireFox"} | Select-Object ProcessName,Id | Format-Table -AutoSize
$FireFoxRunningProcesses = Get-Process | Where-Object {$_.Name -Match "FireFox"} | Select-Object -ExpandProperty Id
If (!$FireFoxRunningProcesses) {}
Else {
Write-Host "The following processes will be stopped to perform certificate manipulation:"
$FireFoxRunningProcessesList
$TerminateProcessQuestion = Read-Host "To auto-terminate (ungracefully!) processes, press 'Y', otherwise, press any other key"
If ($TerminateProcessQuestion -ne 'y') {
Clear
Write-Host "Cannot continue as Firefox process is still running, ending script ..."
Exit}
Else {ForEach ($FireFoxRunningProcess in $FireFoxRunningProcesses) {
[Int]$FireFoxRunningProcess = [Convert]::ToInt32($FireFoxRunningProcess, 10)
Stop-Process -Id $FireFoxRunningProcess -Force}}
}
##################################################################################################
##################################################################################################
# The remote files (certificates and the NSS Tools CertUtil files are copied locally)
$FFCertificateListItemRemote = Get-ChildItem $FFCertLocationRemote -Recurse -Include *.cer,*.dll,certutil.exe
ForEach ($FFCertificateItemRemote in $FFCertificateListItemRemote) {
Copy-Item $FFCertificateItemRemote.FullName -Destination $FFCertLocationLocal}
# Get a list of the local certificates
$FFCertificateListLocal = Get-ChildItem $FFCertLocationLocal -Recurse -filter *.cer
Clear
Set-ExecutionPolicy "Unrestricted"
# Find all Firefox profiles and create an array called FFDBList
# Of course, you'll only be able to get to the ones your permissions allow
$LocalProfiles = Get-ChildItem "C:\Users" | Select-Object -ExpandProperty FullName
ForEach ($LocalProfile in $LocalProfiles) {
$FFProfile = Get-ChildItem "$LocalProfile\AppData\Roaming\Mozilla\Firefox\Profiles" | Select-Object -ExpandProperty FullName
If (!$FFProfile) {Write-Host "There is no Firefox Profile for $LocalProfile"}
ELSE {$FFDBList += $FFProfile}
}
Clear
Write-Host "#################################"
Write-Host "The List of FireFox Profiles is:"
Write-Host "#################################"
$FFDBList
PAUSE
##################################################################################################
##################################################################################################
# Setup 4x functions (List, Delete, Add and Purge)
#
# - List will simply list certificates from the Firefox profiles
#
# - Delete will delete the certificates the same as the certificates you're going to add back in
# So for example, if you have 2x certificates copied earlier for import, 'CompanyA' and 'CompanyZ'
# then you can delete certificates with these names beforehand. This will prevent the
# certificates you want to import being skipped/duplicated because they already exist
#
# - Add will simply add the list of certificates you've copied locally
#
# - Purge will allow you to delete 'other' certificates that you've manually listed in the
# variable '$LegacyCertificates' at the top of the script
# Each of the functions perform the same 4x basic steps
#
# 1) Do the following 3x things for each of the Firefox profiles
# 2) Do the 2x following things for each of the certificates
# 3) Generate an expression using parameters based on the certificate nickname specified
# earlier, and the profile and certificate informaiton
# 4) Invoke the expression
Function ListCertificates {
Write-Host "#############################"
ForEach ($FFDBItem in $FFDBList) {
$FFCertificateListItemFull = $FFCertificateListItem.FullName
Write-Host "Listing Certificates for $FFDBitem"
$ExpressionToListCerts = "$FFCertTool -L -d `"$FFDBItem`""
Invoke-Expression $ExpressionToListCerts
}
PAUSE}
Function DeleteOldCertificates {
Write-Host "#############################"
ForEach ($FFDBItem in $FFDBList) {
ForEach ($FFCertificateListItem in $FFCertificateListLocal) {
$FFCertificateListItemFull = $FFCertificateListItem.FullName
Write-Host "Deleting Cert $FFCertificateListItem for $FFDBitem"
$ExpressionToDeleteCerts = "$FFCertTool -D -n `"$CertificateNickname`" -d `"$FFDBItem`""
Invoke-Expression $ExpressionToDeleteCerts
}}
PAUSE}
Function AddCertificates {
Write-Host "#############################"
ForEach ($FFDBItem in $FFDBList) {
ForEach ($FFCertificateListItem in $FFCertificateListLocal) {
$FFCertificateListItemFull = $FFCertificateListItem.FullName
Write-Host "Adding $FFCertificateListItem Cert for $FFDBitem"
$ExpressionToAddCerts = "$FFCertTool -A -n `"$CertificateNickname`" -t `"CT,C,C`" -d `"$FFDBItem`" -i `"$FFCertificateListItemFull`""
Write-Host $ExpressionToAddCerts
Invoke-Expression $ExpressionToAddCerts
#PAUSE
}}
PAUSE}
Function PurgeLegacyCertificates {
Write-Host "#############################"
ForEach ($FFDBItem in $FFDBList) {
ForEach ($LegacyCertificateItem in $LegacyCertificates) {
$LegacyCertificateItemFull = $LegacyCertificateItem.FullName
Write-Host "Purging Old Certs ($LegacyCertificateItem) for $FFDBitem"
#$ExpressionToDeleteLegacyCerts = "$FFCertTool -D -n `"$OldCertificate`" -d `"$FFDBItem`""
$ExpressionToDeleteLegacyCerts = "$FFCertTool -D -n `"$LegacyCertificateItem`" -d `"$FFDBItem`""
ForEach ($LegacyCertificate in $LegacyCertificates) {
Invoke-Expression $ExpressionToDeleteLegacyCerts}
}}
PAUSE}
##################################################################################################
##################################################################################################
# Creating a few options to invoke the various functions created above
$CertificateAction = ""
Function CertificateActionSelection {
Do {
Clear
$CertificateAction = Read-Host "Would you like to [L]ist all certificates [D]elete all old certificates, [A]dd new certificates, or [P]urge legacy certificates?"
} Until ($CertificateAction -eq "L" -or $CertificateAction -eq "D" -or $CertificateAction -eq "A" -or $CertificateAction -eq "P")
If ($CertificateAction -eq "L") {ListCertificates}
If ($CertificateAction -eq "D") {DeleteOldCertificates}
If ($CertificateAction -eq "A") {AddCertificates}
If ($CertificateAction -eq "P") {PurgeLegacyCertificates}
}
Do {
Clear
$MoreCertificateActions = Read-Host "Would you like to [L]aunch Firefox (as $env:USERNAME), take a [C]ertificate action, or [Q]uit?"
If ($MoreCertificateActions -eq "L") {
Invoke-Item $FireFoxExecutable
Exit}
If ($MoreCertificateActions -eq "C") {CertificateActionSelection}
} Until ($MoreCertificateActions -eq "Q")
Remove-Item $FFCertLocationLocal -Recurse
Set-ExecutionPolicy $ExecutionPolicyOriginal
Exit
Firefox obecnie (od 58) korzysta z bazy danych SQLite cert9.db zamiast starszego cert8.db. Zrobiłem poprawkę do rozwiązania przedstawionego tutaj, aby pracować z nowymi wersjami Firefoksa:
certificateFile="MyCa.cert.pem"
certificateName="MyCA Name"
for certDB in $(find ~/.mozilla* ~/.thunderbird -name "cert9.db")
do
certDir=$(dirname ${certDB});
#log "mozilla certificate" "install '${certificateName}' in ${certDir}"
certutil -A -n "${certificateName}" -t "TCu,Cuw,Tuw" -i ${certificateFile} -d sql:${certDir}
done
- 1. Po cichu zainstaluj certyfikat główny w WiX
- 2. Programowo włącz (zainstaluj) IIS
- 3. Zainstaluj certyfikat główny na Node.js (klient HTTPS)
- 4. Zainstalować programowo certyfikat X509 w moim przypadku
- 5. Poradniki dla Mozilli Rhino
- 6. IIS6: Utwórz/zainstaluj samopodpisany certyfikat SSL z wiersza polecenia
- 7. Konfiguracja Haproxy ssl - zainstaluj root i certyfikat pośredni
- 8. Jak programowo usunąć zainstalowany certyfikat użytkownika?
- 9. Zaimportuj certyfikat z kluczem prywatnym programowo
- 10. programowo zaimportuj certyfikat .cer do magazynu kluczy
- 11. Otwórz zakładkę w Mozilli Dodaj na SDK
- 12. Zainstaluj samopodpisany certyfikat jako zaufany katalog główny w systemie Windows XP
- 13. Zainstaluj pip w dockerze
- 14. Zainstaluj pycairo w virtualenv
- 15. Jak zmienić certyfikat x509.Clicencja w certyfikat Tls.Certyfikat w Go?
- 16. SQL Reporting Services - Przycisk Print nie pokazano w Mozilli
- 17. Certyfikat programisty kontra zakupiony certyfikat dla WCF
- 18. Płatny certyfikat SSL kontra bezpłatny certyfikat SSL
- 19. Zainstaluj Python-Dbus w virtualenv
- 20. Zainstaluj pakiet kernlab w R
- 21. Zainstaluj klejnot w lokalnym folderze
- 22. Certyfikat znaku w PKCS # 11
- 23. Jak można programowo zainstalować certyfikat w lokalnym magazynie urządzenia przy użyciu C#?
- 24. Sieć twórców Mozilli - do czego odnosi się znak zapytania?
- 25. Zainstaluj czcionkę na serwerze
- 26. Zainstaluj numpy na python3.3 - Zainstaluj pip dla python3
- 27. Zainstaluj freetds na Heroku
- 28. Zainstaluj EF 4.4.0.0
- 29. Zainstaluj plikinfo rozszerzenie php
- 30. Zainstaluj rabbitmqadmin na Linuksie
Zobacz również niemal powielać http://askubuntu.com/questions/244582/add-certificate-authorities- system-wide-on-firefox, który jednak obecnie nie zapewnia dużej wartości dodanej. – tripleee
Lepszym rozwiązaniem może być użycie sterownika Selenium do akceptowania certyfikatów. http: // stackoverflow.com/questions/24507078/how-to-deal-with-certificates-using-selen – tavak