Firefoxでシステム全体に認証局を追加する


27

Ubuntuのデフォルトのfirefoxに付属していないルートCAをいくつか追加したいのですが、方法がわかりません。

でローカル証明書に追加しようとしましたcertutilが、うまくいきませんでした。証明書データベースが台無しになりました。

$ certutil -A -d .mozilla/firefox/kek3dogy.default/ -i /usr/local/share/ca-certificates/FNMT_ACRAIZ.crt -n "Certificado Raiz FNMT" -t "TCu,Cuw,Tuw"

その後

$ certutil -L -d .mozilla/firefox/kek3dogy.default/

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

Go Daddy Secure Certification Authority                      ,,   
VeriSign Class 3 Secure Server CA - G3                       ,,   
VeriSign Class 3 Extended Validation SSL CA                  ,,   
DigiCert High Assurance CA-3                                 ,,   
GlobalSign Domain Validation CA - G2                         ,,   
GeoTrust SSL CA                                              ,,   
StartCom Class 2 Primary Intermediate Server CA              ,,   
Google Internet Authority                                    ,,   
Certificado Raiz FNMT                                        CT,C,c
USERTrust Legacy Secure Server CA                            ,,   
HP Jetdirect 2B0EAD20                                        ,,   
Akamai Subordinate CA 3                                      ,,   
VeriSign, Inc.                                               ,,   
Thawte SGC CA                                                ,,   
VeriSign Class 3 Secure Server CA - G2                       ,,

証明書はFirefoxに表示されません。私はこれを数回試してみましたが、プロファイルを削除しても、Firefoxインターフェースで一度表示されましたが、完全に空でした。

とにかく、それはユーザー専用であり、システム全体に追加したいと思います。変更可能なシステム全体のデータベースはありますか?どうやって?

変更できるシステム全体のデータベースがない場合、X起動スクリプト(/etc/X11/Xsession.d/または、xdg autostartシステムによって呼び出されるスクリプト)に依存して/etc/xdg/autostart/セッション開始時にユーザープロファイルを変更できますが、解決策が必要です動作します。コマンドラインからユーザープロファイルに証明書を読み込むことさえできません。


デフォルトのプロファイルを編集するオプションはありますか(新しいプロファイルが作成されると新しく追加された証明書が追加されますが、古いプロファイルは変更されません)?
アンドレアコルベッリーニ

いいえ、約+100個のプロファイルが既に存在し、新しいプロファイルはまれです。
ホルヘスアレス

Firefoxのディレクトリに新しいプロファイルフォルダーを生成してから、それを追加することはできませんprofiles.iniか?次に、変更を追加し、それprofiles.iniを各ユーザーディレクトリにコピーします。
ウィルフ

注:Firefoxのプロファイルを実行して編集できますが、firefox -p最初にFirefoxを閉じる必要があります。
ウィルフ

いいえ、既に既存のプロファイルを持つユーザーは+100人います。彼らは、ブックマーク、履歴、パスワードなどを失うのが好きではないだろう
ホルヘ・スアレス・デリスを

回答:


20

ここでの問題は、Firefoxが証明書を探す「中央」の場所を持たないことです。現在のプロファイルを調べます。そのため/usr/share/ca-certificates、Firefoxではディレクトリの変更やその他の同様のディレクトリは機能しません。これは長年にわたって要求されてきたものです。問題参照620373449498454036を(そしておそらく他の多くのがあります)。

そのため、2種類のソリューションだけが残っています。各プロファイルを変更するか、Firefoxの動作を変更します。私はこれがあなたが探しているものではないことを知っていますが、Firefoxはユーザーのプロファイルのみを見るため、方法はありません。

そうは言っても、私が選択する解決策は、ハードリンクまたはシンボリックリンクを使用することです。具体的には、ハードリンクを使用します。私が判断するのに十分な情報を持っていませんが、この解決策は確かに最も簡単で、おそらくより良いでしょう。

あなたがしなければならないことは、基本的に各プロファイルのそれぞれcert8.dbkey3.dbファイルを削除し、それらを「最も完全な」cert8.dbとへのリンクに置き換えることkey3.dbです。あなたはハードリンク、オリジナルで行く場合cert8.dbkey3.db、新しいものと区別がつかないだろう。

ニーズに合わせてパーミッションを調整することを忘れないでください。ほとんどの場合chmod a+rw、すべての人が証明書を追加/削除できるようにする必要があります。特定のユーザーのみが証明書を追加/削除できるようにする場合は、グループを作成し、そのグループに2つのデータベースを割り当て+wて、グループのみに許可を与えることができます。


うん、思いついたのと同じ。Firefoxにとってはちょっと残念なことです。
gertvdijk

しかし、ユーザー証明書を上書きしませんか?ユーザー証明書はそこに保存されていませんか?
ホルヘスアレス

@JorgeSuárezdeLis:さて、そのファイルを削除すると、証明書が失われます。これが「上書き」の意味であれば、はい。最初にすべてのデータベースを1つにマージしてから、ハードリンクの作成に進む必要があります。
アンドレアコルベッリーニ

しかし... 1人のユーザーに他のユーザーの個人証明書を持たせたくありません!私は今、認証局ではなく、彼らの証明書について話している。
ホルヘスアレス

@JorgeSuárezdeLis:すみません、理解できません:個人証明書とは何ですか?
アンドレアコルベッリーニ

15

最も簡単な方法は、証明書をサンプルのfirefox-profileにインポートしてから、cert8.dbを証明書を装備するユーザーにコピーすることです。

最初に証明書を手作業でサンプルユーザーのfirefoxプロファイルにインポートします。次にコピーする

/home/${USER}/.mozilla/firefox/${randomalphanum}.default/cert8.db

ユーザーのfirefox-profilesに。それでおしまい。新しいユーザーが証明書を自動的に取得するようにしたい場合は、次の場所にコピーcert8.dbしてください。

/etc/firefox-3.0/profile

既存の証明書を上書きしない代替方法を次に示します。[Linuxシステムのbashフラグメント]

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

libnss3-toolsパッケージ(debian / ubuntu)にcertutilがあります。

参照:プログラムによるCA証明書のインポート

ソース:プログラムによる証明書のMozillaへのインストール


+1ですが、これに賛成票を投じる場合は、おそらくこれが由来するStackOverflowの回答にも賛成票を投じるべきです。
トリプリー14

4

一般的な信念に反して、Firefoxに独自のハードコードセットではなくシステム証明書を確認させることができます。

これを行うには、p11-kitというパッケージを使用します。p11-kitはlibnssckbi.so、ハードコードされた証明書のセットを含む共有ライブラリのドロップイン置換を提供します。代わりに、p11-kitバージョンはシステム証明書ストアから証明書を読み取ります。

Firefoxにはの独自のバージョンが付属しているlibnssckbi.soため、libnss3で提供されているバージョンではなく、追跡して置き換える必要があります。

sudo mv /usr/lib/firefox/libnssckbi.so /usr/lib/firefox/libnssckbi.so.bak
sudo ln -s /usr/lib/x86_64-linux-gnu/pkcs11/p11-kit-trust.so /usr/lib/firefox/libnssckbi.so

次に、~/.pkiFirefoxの再起動時にディレクトリを削除して、Firefoxが証明書データベースを更新するようにします(システム証明書を取得します)。注:これにより、ストア内の既存の証明書がすべて削除されるため、手動で追加したカスタム証明書がある場合は、そのフォルダーをバックアップしてから再インポートすることができます。


ああ、すごい、それはちょっとしたハックですが、+ 1です。dpkg-divertFirefoxパッケージをアップグレードするときに、APTがファイルを再度上書きしないようにするためのステップを追加することができます。
gertvdijk

@wheeler。これがまだ機能するかどうか知っていますか?Ubuntu 18.04で試しましたが、このFirefoxを実行した後、証明書がまったく読み込まれません。P11-キット0.23.9-2持っている
ケビンVasko

1

CCKウィザードFirefoxアドオンの機能の1つは、CA証明書のインポートです。このアドオンを使用して、会社のCA証明書を含むカスタムアドオンを作成します。次に、すべてのワークステーションが更新を取得する内部リポジトリの.debにカスタムxpiをパッケージ化します。

CCKウィザード

編集:Ubuntu用のxpiをパッケージ化するには、ディレクトリ/ usr / lib / firefox-addons / extensions / [addon-name @ servername]を含むパッケージを作成し、xpiの内容全体をこのディレクトリに解凍する必要があります。 。たとえば、アドオンにfoobarbazという名前を付け、更新するように設定したサーバー(この機能を有効にする場合)がintranet.example.comの場合、ディレクトリはfoobarbaz@intranet.example.comになります。自動更新を有効にすることはありませんが、代わりにリポジトリのdebを更新します。


自己完結型であり、1か所に多数の他のカスタマイズを含めることができるため、この方法は他の方法よりも好みます。しかし、著者はAMOから拡張機能を削除したようです。現在、彼は彼自身のサイトそれをここに持っています、そして、最新のxpiはここにあります
アミットナイドゥ

1

Firefoxはクリーンインストール後に動作します。証明書データベースcert8.dbが削除されると、次回のFirefox起動時に再生成されます。これは、CA証明書のシステム全体のデフォルトストレージがあることを強く示唆しています。

Firefoxのソースコード、ビルトインCA証明書が実際にfirefox実行可能ファイルにハードコードされていることを示しています。それが存在するセキュリティ/ NSS / libに/ ckfw /組み込みコマンド/ certdata.txt

そのため、システム全体に証明書をインストールする方法はありません。ソースコードにパッチを当てると、知的財産権に関する問題が発生する可能性があることに注意してください。


1

ユーザー向けにこれを行う「ユーザー環境仮想化」(UEV)アプリケーションを使用していますが、Windowsクライアントのログオンスクリプトでも同じことができます。%APPDATA%\ Mozilla \ Firefox \%PROFILE%パスを動的に見つけるためにすべてのコードを投稿するわけではありませんが、見つけたら、いくつかの基本的なコマンドを使用してスクリプトをインポートできます。基本的に、Firefoxのprofiles.iniファイルを読んで、Firefoxのprofile / cert8.dbへのパスを確認しています。

certutil.exeアプリケーションの使用を見ることもできます。 https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/tools/NSS_Tools_certutil

信頼できる証明書を中央の場所からシステム上のすべてのユーザーのFirefoxに自動的にインポートするユーザー用のログオンスクリプトを実行できます。

証明書インポートvbスクリプトの「コア」は次のとおりです。

If Instr(strLine,"Path=Profiles/") Then
  arrLine = Split(strLine, "/")
  strProfile = strAppData & "\Mozilla\Firefox\Profiles\" & arrLine(1)
  strCertDB = strProfile & "\cert8.db"

  'Verify the DB exists, if not move to the next entry
  If objFSO.FileExists(strCertDB) Then
    'Run certutil command on this database
    strCertCommand1 = "\\SERVERNAME\SHARENAME$\certs\certutil\certutil.exe -A " &_
    "-n MYCA -t ""CT,C,C"" -d " & strProfile & " -i \\SERVERNAME\SHARENAME$\certs\MYCA_Root.cer"

    strCertCommand2 = "\\SERVERNAME\SHARENAME$\certs\certutil\certutil.exe -A " &_
    "-n MYSECONDCA -t ""CT,C,C"" -d " & strProfile & " -i \\SERVERNAME\SHARENAME$\certs\SecondCA_Root.cer"

    strCertCommand3 = "\\SERVERNAME\SHARENAME$\certs\certutil\certutil.exe -A " &_
    "-n MYTHIRDCA -t ""CT,C,C"" -d " & strProfile & " -i \\SERVERNAME\SHARENAME$\certs\ThirdCA_Root.cer"

    'Run the import commands for this Firefox profile
    objShell.Run("%comspec% /c " & strCertCommand1),0,TRUE
    objShell.Run("%comspec% /c " & strCertCommand2),0,TRUE
    objShell.Run("%comspec% /c " & strCertCommand3),0,TRUE

1

ほとんどの場合、デフォルトでは設定されていない場合、Firefoxはレガシーセキュリティデータベース(cert8.db、key3.db、secmod.db)を使用するため、別のコマンドラインを使用して証明書を挿入する必要があることがわかりましたFirefoxが使用する正しいデータベース。(certutilの男の詳細を参照)

システムがデフォルトのデータベースを使用する場合、コマンドは次のようになります:(dbm)

certutil -A -n "Description Name" -t "CT,C,C" -d dbm:/home/<username>/.mozilla/firefox/<default folder>/ -i certificate.crt

それ以外の場合は、次のようになります:(sql)

certutil -A -n "Description Name" -t "CT,C,C" -d sql:/home/<username>/.mozilla/firefox/<default folder>/ -i certificate.crt

man certutilから:

-d [prefix]directory
Specify the database directory containing the certificate and key
database files.

certutil supports two types of databases: the legacy security databases
(cert8.db, key3.db, and secmod.db) and new SQLite databases (cert9.db,
key4.db, and pkcs11.txt).

NSS recognizes the following prefixes:

·   sql: requests the newer database

·   dbm: requests the legacy database

If no prefix is specified the default type is retrieved from
NSS_DEFAUL

最初のcertutilコマンドで.pemファイルを使用するとうまくいきました。私はシングルユーザーセットアップスクリプトを自動化することを探していましたが、これはトリックを行います。あなたがapt-get install libnss3-tools持っている必要がありますcertutil
xificurC
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.