extensions extensiones extension example developer create chrome apps google-chrome-extension

google chrome extension - extensiones - Obtención de ID de extensión de Chrome para desarrollo



extensiones chrome (2)

La forma más fácil de obtener una ID de extensión es generar el archivo .pem y extraer la ID de la extensión siguiendo los pasos que se describen en esta respuesta (lea la parte debajo de la imagen).

Si desea generar la ID de extensión solo con herramientas de línea de comandos , busque más. Voy a usar OpenSSL porque es multiplataforma.

Primero, generamos una clave privada. Mantenga esta clave privada en secreto y no la pierda. De lo contrario, no podrá crear un archivo CRX con la misma ID de extensión. Al momento de escribir, las claves privadas generadas por Chrome son claves RSA de 2048 bits en formato PKCS # 8 ( 1024 bits hasta 2013 ). A lo largo de la respuesta, me referiré a este archivo de clave privada como key.pem , porque Chrome Web Store espera que la clave privada se llame key.pem .

En segundo lugar, muestro cómo generar el valor para el campo "key" del archivo de manifiesto . Esta es solo la clave pública, codificada en formato base64.

El tercer comando en mi respuesta muestra cómo calcular la ID de extensión dada una clave pública (derivada de una clave privada).

Linux / Mac

OpenSSL está instalado en la mayoría de las distribuciones de Linux. Si no, simplemente instale openssl través de su administrador de paquetes favorito.

# 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

He puesto 2>/dev/null al comienzo de cada línea para evitar que "escriba la clave RSA" se envíe a la consola.

Windows

Si no tiene OpenSSL, puede obtener un binario precompilado desde este espejo .

@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

He puesto 2>NUL al comienzo de cada línea con el comando openssl para ocultar una advertencia inofensiva sobre un archivo de configuración faltante.

Ejemplos

Aquí hay un ejemplo de ejecutar los comandos anteriores en Linux. La salida relevante de los comandos está en negrita. El primer comando crea un archivo, por lo que no hay salida visible en el shell. Tenga en cuenta que la salida del segundo y tercer comando no termina con un salto de línea, por lo que hay un "$" al final de la línea (que no debe copiarse).

$ # 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 MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA8vj7SK0NZ6ak7K6m6KEAkfGaNfKUahqFFms6W8rq+voaW7nETrpsMqNyhmBQ+ea0KkyI/S5XIrDQPqDcNpvesYlg9lsmi7CQBZjJw7zNqKkvn0oYaP4SNtWZfZopBumqFbzFi5cst2PT+XU9CBitxXNtocRtcjOsa44W1gPA5xanmtlF258N6Nann+rSOAdhIWqSo/J6fj72cxTNfmqLkwAvhdS4Zyux4F87vxp4YTSwElfYXFsHZWi7h66uuuMzqyOyJz5grhCJ24rtTshMQUCxQWyhO2XT2J1tVfUN1YVw6xdKUz3aGyKZeXCuql5klHmlqE9PTlbKj/1VMiIgCQIDAQAB$ $ # Calculate extension ID (outputs to stdout) $ 2>/dev/null openssl rsa -in key.pem -pubout -outform DER | sha256sum | head -c32 | tr 0-9a-f a-p mfabfdnimhipcapcioneheloaehhoggk$ $ cat key.pem # Show content of key.pem for completeness of this demo -----BEGIN PRIVATE KEY----- MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDy+PtIrQ1npqTs rqbooQCR8Zo18pRqGoUWazpbyur6+hpbucROumwyo3KGYFD55rQqTIj9LlcisNA+ oNw2m96xiWD2WyaLsJAFmMnDvM2oqS+fShho/hI21Zl9mikG6aoVvMWLlyy3Y9P5 dT0IGK3Fc22hxG1yM6xrjhbWA8DnFqea2UXbnw3o1qef6tI4B2EhapKj8np+PvZz FM1+aouTAC+F1LhnK7HgXzu/GnhhNLASV9hcWwdlaLuHrq664zOrI7InPmCuEInb iu1OyExBQLFBbKE7ZdPYnW1V9Q3VhXDrF0pTPdobIpl5cK6qXmSUeaWoT09OVsqP /VUyIiAJAgMBAAECggEAIztFPKmTOwdn/MXqf+rwqTjuUopFSQllaPXNdYf8AL6J Wema9IuFquYWcjO/Ki1wzH1ik8vHaMlYuOwcYnLBnN69x5s6AKFukNEx2IclDyLR O/jDh13oCDl600KqVk1Fk3dW8cHPAxyfnRmJ6wWhFPOC3yUbdabWhpYI66mJrDhN ZpN04RmH7DIlhlBpvq/OMVodhRtqb4/EVJYghTxUsrsv/I+3t3zl/o/c0DiOjiVZ pEBYzn0rrHP8BAEhJWagGNgvotHPaVKAjoYcUiOUtMM4P1Js034XKjP4MHE1pMbN VlVnQMz3/6CXFL+wU1QqfohdChmcnc4QwM+vCFK47QKBgQD/FjHxhCJco0rNqNua B0inGx2Jfb4b+FWwLyNobaYey11o0MjpkpAvYcfe3zW8DQtmepDxGL8CpORoWtFg sVnmhAir0I6bxdZLMwKcp4T+kHW3n/ae3z8tPvMvclCnARGEp+ccyDH9X2iyaSd5 8DeJ6ND32+yr+vLgyyK/JW1z5wKBgQDz167cLe+xoRUqlKdJq8lzmij30lGVUT2D 5Fn+2YUKIMeVEM7PlEmu9UmpN5HMA+LSNeiMZ1uhW5YQovXlXZCWoRqieeI4LMoM M335hsAWpS8pFRdlXMy885w5FUC5v4Ji0RUI37WON6fxNd8zFVqAMOcAANg716RI MWfblCJOjwKBgQDV8BKBIbYEBfv10poja9p2NFqodqpcIQIU2uQScGvzxdIY14q5 wu9kndiYxpH1nuch0sf/PSbuG8do8kpKk1P37mKrXyZL5TgeJ7EYG7OCITxpfiLE Ci6dTv98mp6kAlRj8sH1tL2gaEWR5Hl0XpDl/DpOtsefUcAj4prIv6Y1nwKBgGUk obNSmonjdxQidQFp8DWzTCr/Yje9ava6UVoUf8qjriV2w1H3AFlCBTvbgO5O7laj ZcJXXPqhMq3T6ospNEBGsvWR+PO0IFrPQQGvkx3Rhq5TwVCaHZKCudozppVlin/S mhcENBq5mz/CSMK3qMJjhm3J6+dmmw4W8C10VIahAoGARf4zus0TQIxRlix1Oaaz sM5yANLcLivoeJDVOlUFUWgeSUc6Yma8T/FYlAkEVyyK+/nCWNErTS2yOzXEff01 n8F0h1DJ4K5zxt0OhGUIUAGgR/kqpub0omqTJcJndLv2qgzofwK21Uih6yQzDeus lJsf3m3tuax5kcmhnDojbtE= -----END PRIVATE KEY-----

Aunque es similar a esta pregunta SO , no estoy preguntando:

¿Bajo qué condiciones cambia la identificación de una extensión?

ni

¿Cómo puedo cargar mi archivo zip en el Panel de control de Chrome?

Sin embargo, estoy preguntando cómo puedo obtener la clave de una extensión sin usar el Panel de control de Chrome. Por lo tanto, no lo considero un duplicado de esta pregunta SO .

La documentación para usar Google Identity dentro de una extensión de Chrome indica la necesidad de copiar la clave de una extensión a su archivo de manifiesto.

Para mantener constante su Id. De aplicación, debe copiar la clave en el archivo manifest.json instalado en su manifiesto de origen.

Sin embargo, cuando navegas hacia el directorio recomendado (... Google/Chrome/Default/Extensions ) no veo la ID de mi extensión desempaquetada. Me doy cuenta de que esto se debe a que la extensión no se instaló como archivo .crx . Sin embargo, la documentación está claramente escrita para el desarrollo :

Copie la clave en el archivo manifest.json instalado en su manifiesto de origen, para que su ID de aplicación permanezca constante durante el desarrollo .

¿Cómo puedo evitar empaquetar mi extensión y volver a instalarla cada vez que realizo un cambio? Si mi extensión de desarrollo no tiene un archivo de manifiesto instalado desde el que pueda obtener la clave de la extensión, ¿de dónde puedo obtenerla?


La manera más fácil que encontré para hacerlo es empaquetando la extensión de Chrome en modo de desarrollo.

Para empacar una extensión:

Abra la página de administración de Extensiones yendo a esta URL: chrome: // extensiones

Asegúrese de que la casilla de verificación "Modo de desarrollador" en la esquina superior derecha esté marcada. Haga clic en el botón de extensión Pack . Aparece un cuadro de diálogo.

En el campo del directorio raíz de Extensión, especifique la ruta a la carpeta de la extensión, por ejemplo, ~/mytodosextension . (Ignore el otro campo; no especifica un archivo de clave privada la primera vez que empaqueta una extensión en particular).

Haga clic en paquete . El empaquetador crea dos archivos:

  • un archivo .crx, que es la extensión real que se puede instalar,

  • y un archivo .pem, que contiene la clave privada.

Ver la documentación de Chrome here