Menu Chiudi

Pillola #53: Aggiungere una CA – certification authority in Firefox tramite uno script

NB. lo so che questa pillola stona un pochino con tutte le altre… ma la mia necessità resta comunque quella di poter “pilotare” in qualche modo un sw libero (come FireFox) in un ambiente proprietario 😛

L’idea di base è quella di utilizzare il tool certutil per aggiungere una CA attendibile al database di Firefox.

In fase di login, viene eseguito uno script VBScript, il quale importa il certificato NOMECERTIFICATO.crt nel DB di Firefox per il profilo dell’utente corrente.

Questa la documentazione relativa al tool: https://developer.mozilla.org/en-US/docs/NSS/tools/NSS_Tools_certutil
Questi i sorgenti: https://developer.mozilla.org/en-US/docs/NSS/Tools
Questi gli eseguibili compilati per Window$: ftp://ftp.mozilla.org/pub/mozilla.org/security/nss/releases/NSS_3_10_RTM/WIN954.0_OPT.OBJ/nss-3.10.zip

Questo lo script richiamato tramite netlogon

Option Explicit

'On error resume next

' ----------------------------------------------------------
' Impostare il percorso in cui si trovano i certificati
' e il nickname impostato in fase di importazione delle CA
' ----------------------------------------------------------
Const strCertDirPath    = "\\srvad1\netlogon\ca"
Const NickName = "kattive.levico.locale"
' ----------------------------------------------------------

Const DEBUGGING             = true
const SCRIPT_VERSION        = 0.1
Const EVENTLOG_WARNING      = 0
Const CERTUTIL_EXCUTABLE    = "certutil.exe"
Const ForReading = 1

Dim 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

strCertutil      = strCertDirPath & "\" & CERTUTIL_EXCUTABLE
vAPPDATA = WshShell.ExpandEnvironmentStrings("%APPDATA%") 
UserFirefoxDir = vAPPDATA & "\Mozilla\Firefox"

if objFilesystem.FileExists( UserFireFoxDir & "\profiles.ini") Then

	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) = "crt" Then
	
		    WshShell.CurrentDirectory=WshShell.ExpandEnvironmentStrings("%ProgramFiles%") & "\Mozilla Firefox"
	            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, "Aggiornamento CA - Firefox: " & WScript.ScriptFullName & " - version:" & SCRIPT_VERSION & vbCrLf & vbCrLf & message
	End If
End If

function output(message)
    If DEBUGGING Then
        Wscript.echo message
    End if
End function

Set WshShell  = Nothing
Set objFilesystem = Nothing

Questo il contenuto della cartella condivisa:

certutil.exe (scompattato da nss-3.10.zip)
nss3.dll (scompattato da nss-3.10.zip)
smime3.dll (scompattato da nss-3.10.zip)
softokn3.dll (scompattato da nss-3.10.zip)
NOME_CERTIFICATO.crt (file contenente la CA)
WordPress Appliance - Powered by TurnKey Linux