似ているがこのSOの質問私が尋ねているのは、
拡張機能の ID はどのような条件で変更されますか?
または
ZIP アーカイブを Chrome ダッシュボードにアップロードするにはどうすればよいですか?
しかし、Chromeダッシュボードを使わずに拡張機能のキーを取得する方法を尋ねています。したがって、これはこのSOの質問。
のGoogle Identity の使用に関するドキュメントChrome 拡張機能内では、拡張機能のキーをマニフェスト ファイルにコピーする必要があることが示されています。
アプリケーション ID を一定に保つには、インストールされた manifest.json 内のキーをソース マニフェストにコピーする必要があります。
ただし、推奨ディレクトリ(... Google/Chrome/Default/Extensions
)解凍した拡張機能のIDが表示されません。これは拡張機能が次のようにインストールされていないためだとわかりました。.crx ファイル。 しかしドキュメンテーション明らかに以下の目的で書かれています発達:
インストールされたmanifest.jsonのキーをソースマニフェストにコピーして、アプリケーションIDは開発中も一定のままです。
変更を加えるたびに拡張機能をパッケージ化して再インストールする手間を省くにはどうすればよいですか? 開発中の拡張機能に拡張機能のキーを取得できるマニフェスト ファイルがインストールされていない場合、どこから取得できますか?
ベストアンサー1
簡単な方法
拡張IDを取得する最も簡単な方法は、.pem
ファイルを生成し、私の説明にある手順で拡張IDを抽出することです。その他の回答(画像の下の部分をお読みください)。
コマンドライン方式
この回答の残りは、拡張IDを生成したい人向けです。コマンドラインツールのみ. 使用するつもりですオープンSSLクロスプラットフォームだからです。
まず、秘密鍵を生成します。この秘密鍵は秘密にし、紛失しないようにしてください。そうしないと、同じ拡張機能IDを持つCRXファイルを作成できなくなります。執筆時点では、Chromeによって生成された秘密鍵は次のとおりです。2048ビットRSAキーPKCS #8 形式 (2013年までは1024ビット)。この回答では、この秘密鍵ファイルを と呼びますkey.pem
。Chromeウェブストアでは、秘密鍵はkey.pem
。
次に、値を生成する方法を示します。"key"
マニフェストファイルのフィールドこれは、base64 形式でエンコードされた公開キーです。
私の回答の 3 番目のコマンドは、公開キー (秘密キーから派生) を指定して拡張 ID を計算する方法を示しています。
Linux / Mac
OpenSSL はほとんどの Linux ディストリビューションにインストールされています。インストールされていない場合は、openssl
お気に入りのパッケージ マネージャーを使用してインストールしてください。
# Create private key called key.pem
2>/dev/null openssl genrsa 2048 | openssl pkcs8 -topk8 -nocrypt -out key.pem
# Generate string to be used as "key" in manifest.json (outputs to stdout)
2>/dev/null openssl rsa -in key.pem -pubout -outform DER | openssl base64 -A
# Calculate extension ID (outputs to stdout)
2>/dev/null openssl rsa -in key.pem -pubout -outform DER | shasum -a 256 | head -c32 | tr 0-9a-f a-p
2>/dev/null
「RSA キーの書き込み」がコンソールに出力されないように、各行の先頭に を配置しました。
ウィンドウズ
OpenSSLをお持ちでない場合は、コンパイル済みのバイナリを以下から入手できます。この鏡。
@echo off
:: Assuming that you have installed OpenSSL in this directory
SET PATH=%PATH%;C:\OpenSSL-Win32\bin
:: Create private key called key.pem
2>NUL openssl genrsa -out priv.tmp 2048
2>NUL openssl pkcs8 -topk8 -in priv.tmp -nocrypt -out key.pem
del priv.tmp
:: Generate string to be used as "key" in manifest.json
2>NUL openssl rsa -in key.pem -pubout -outform DER -out pub.tmp
2>NUL openssl base64 -A -in pub.tmp
del pub.tmp
:: Calculate extension ID
2>NUL openssl rsa -in key.pem -pubout -outform DER -out pub.tmp
2>NUL openssl dgst -sha256 -out checksum.tmp pub.tmp
SET /p EXTID=<checksum.tmp
SET EXTID=%EXTID:* =%
SET EXTID=%EXTID:~0,32%
SET EXTID=%EXTID:f=p%
SET EXTID=%EXTID:e=o%
SET EXTID=%EXTID:d=n%
SET EXTID=%EXTID:c=m%
SET EXTID=%EXTID:b=l%
SET EXTID=%EXTID:a=k%
SET EXTID=%EXTID:9=j%
SET EXTID=%EXTID:8=i%
SET EXTID=%EXTID:7=h%
SET EXTID=%EXTID:6=g%
SET EXTID=%EXTID:5=f%
SET EXTID=%EXTID:4=e%
SET EXTID=%EXTID:3=d%
SET EXTID=%EXTID:2=c%
SET EXTID=%EXTID:1=b%
SET EXTID=%EXTID:0=a%
echo %EXTID%
del checksum.tmp pub.tmp
@echo on
構成ファイルが見つからないという無害な警告を非表示にするために、2>NUL
各行の先頭にコマンドを配置しました。openssl
例
前のコマンドを Linux で実行する例を次に示します。コマンドの関連出力は太字で表示されています。最初のコマンドはファイルを作成するため、シェルには目に見える出力はありません。2 番目と 3 番目のコマンドの出力は改行で終了しないため、行末に「$」があることに注意してください (コピーしないでください)。
$ # key.pemという秘密鍵を作成する $ 2>/dev/null openssl genrsa 2048 | openssl pkcs8 -topk8 -nocrypt -out key.pem $ # manifest.json で「キー」として使用される文字列を生成します (stdout に出力) $ 2>/dev/null openssl rsa -in key.pem -pubout -outform DER | openssl base64 -A MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA8vj7SK0NZ6ak7K6m6KEAkfGaNfKUahqFFms6W8rq+voaW7nETrpsMqNyhmBQ+ea0KkyI/S5XIrDQPqDcNpvesYlg9lsmi7CQBZjJw7zNqKkvn0oYaP4SNtWZfZopBumqFbzFi5cst2PT+XU9CBitxXNt ocRtcjOsa44W1gPA5xanmtlF258N6Nann+rSOAdhIWqSo/J6fj72cxTNfmqLkwAvhdS4Zyux4F87vxp4YTSwElfYXFsHZWi7h66uuuMzqyOyJz5grhCJ24rtTshMQUCxQWyhO2XT2J1tVfUN1YVw6xdKUz3aGyKZeXCuql5klHmlqE9PTlbKj/1VMiIgCQIDAQAB$ $ # 拡張IDを計算します(stdoutに出力します) $ 2>/dev/null openssl rsa -in key.pem -pubout -outform DER | sha256sum | head -c32 | tr 0-9a-f ap 翻訳:$ $ cat key.pem # このデモの完全性を保つために、key.pem の内容を表示します -----秘密鍵の開始----- MIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwgSjAgEAAoIBAQDy+PtIrQ1npqTs rqbooQCR8Zo18pRqGoUWazpbyur6+hpbucROumwyo3KGYFD55rQqTIj9LlcisNA+ oNw2m96xiWD2WyaLsJAFmMnDvM2oqS+fShho/hI21Zl9mikG6aoVvMWLlyy3Y9P5 dT0IGK3Fc22hxG1yM6xrjhbWA8DnFqea2UXbnw3o1qef6tI4B2EhapKj8np+PvZz FM1+aouTAC+F1LhnK7HgXzu/GnhhNLASV9hcWwdlaLuHrq664zOrI7InPmCuEInb 翻訳: /VUyIiAJAgMBAAECggEAIztFPKmTOwdn/MXqf+rwqTjuUopFSQllaPXNdYf8AL6J ウィマ9IuFquYWcjO/Ki1wzH1ik8vHaMlYuOwcYnLBnN69x5s6AKFukNEx2IclDyLR O/jDh13oCDl600KqVk1Fk3dW8cHPAxyfnRmJ6wWhFPOC3yUbdabWhpYI66mJrDhN ZpN04RmH7DIlhlBpvq/OMVodhRtqb4/EVJYghTxUsrsv/I+3t3zl/o/c0DiOjiVZ ペビージーズ VlVnQMz3/6CXFL+wU1QqfohdChmcnc4QwM+vCFK47QKBgQD/FjHxhCJco0rNqNua B0inGx2Jfb4b+FWwLyNobaYey11o0MjpkpAvYcfe3zW8DQtmepDxGL8CpORoWtFg sVnmhAir0I6bxdZLMwKcp4T+kHW3n/ae3z8tPvMvclCnARGEp+ccyDH9X2iyaSd5 8DeJ6ND32+yr+vLgyyK/JW1z5wKBgQDz167cLe+xoRUqlKdJq8lzmij30lGVUT2D 5Fn+2YUKIMeVEM7PlEmu9UmpN5HMA+LSNeiMZ1uhW5YQovXlXZCWoRqieeI4LMoM M335hsAWpS8pFRdlXMy885w5FUC5v4Ji0RUI37WON6fxNd8zFVqAMOcAANg716RI MWfblCJOjwKBgQDV8BKBIbYEBfv10poja9p2NFqodqpcIQIU2uQScGvzxdIY14q5 wu9kndiYxpH1nuch0sf/PSbuG8do8kpKk1P37mKrXyZL5TgeJ7EYG7OCITxpファイル Ci6dTv98mp6kAlRj8sH1tL2gaEWR5Hl0XpDl/DpOtsefUcAj4prIv6Y1nwKBgGUk obNSmonjdxQidQFp8DWzTCr/Yje9ava6UVoUf8qjriV2w1H3AFlCBTvbgO5O7laj ZcJXXPqhMq3T6ospNEBGsvWR+PO0IFrPQQGvkx3Rhq5TwVCaHZKCudozppVlin/S mhcENBq5mz/CSMK3qMJjhm3J6+dmmw4W8C10VIahAoGARf4zus0TQIxRlix1Oaaz sM5yANLcLivoeJDVOlUFUWgeSUc6Yma8T/FYlAkEVyyK+/nCWNErTS2yOzXEff01 n8F0h1DJ4K5zxt0OhGUIUAGgR/kqpub0omqTJcJndLv2qgzofwK21Uih6yQzデウス lJsf3m3tuax5kcmhnDojbtE= -----秘密鍵終了-----