Openssl não é reconhecido como um comando interno ou externo

177

Desejo gerar uma assinatura de aplicativo para o meu aplicativo que mais tarde será integrada ao Facebook. Em um dos tutoriais do Facebook, encontrei este comando:

keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64

No tutorial, ele diz que, executando esse cmd, meu processo de geração da assinatura será iniciado.

No entanto, este comando fornece um erro:

openssl is not recognized as an internal or external command

Como posso me livrar disso?

Khurram
fonte
10
Faça o download e instale o OpenSSL .
22712 Michael Michaelototta
Eu baixei 3 deles ninguém é compatível: /
Khurram
1
O que isso significa, khurram?
22812 Michael Petrotta
1
Eu baixei muitas versões do openssl a partir do link que você forneceu, mas cada uma delas apresenta um erro antes da instalação que não é compatível com o Windows 7-64 bits. Você pode me dizer o openssl exato que eu exijo
Khurram
1
você pode obtê-lo no link que eu publiquei no meu e-mail abaixo ...
Usama Sarwar

Respostas:

395

Bem, no lugar do openssl ... você precisa colocar o caminho para a pasta openssl que você baixou. Seu comando real deve se parecer com:

keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | "C:\Users\abc\openssl\bin\openssl.exe" sha1 -binary | "C:\Users\abc\openssl\bin\openssl.exe" base64

Lembre-se, o caminho que você digitará será o caminho em que você instalou o openssl ... espero que ajude .. :-)

Editar:

você pode baixar o openssl para windows 32 e 64 bits nos respectivos links abaixo:

OpenSSL para 64 bits

OpenSSL para 32 bits

Usama Sarwar
fonte
1
ele diz que c: \ OpenSSL \ bin \ OpenSSL não é reconhecido
Akhil Jain
7
uma maneira melhor seria executar o comando original do diretório openssl / bin. Ou seja, se meu diretório OpenSSL está em C: dev, eu iria passar para C: \ dev \ OpenSSL \ bin, e execute o comando como é
AnhSirk Dasarp
2
você deve destacar o arquivo openssl.exe: exportcert -alias androiddebugkey -keystore ~ ​​/ .android /debug.keystore | "C: \ openssl \ bin \ openssl.exe" sha1 -binário | "C: \ openssl \ bin \ op enssl.exe" base64
phanhongphucit
@LatentBoy sim, você está certo. seu caminho funcionou para mim. Muito obrigado.
surhidamatya
obrigado ... depois de tentar cerca de uma hora, a sua resposta funcionou para mim
Krupal Shah
23

Use o caminho inteiro, assim:

exportcert -alias androiddebugkey -keystore ~/.android
/debug.keystore | "C:\openssl\bin\openssl.exe" sha1 -binary | "C:\openssl\bin\op
enssl.exe" base64

Funcionou para mim.

Kaloyan Drenski
fonte
18

Siga estas etapas, espero que sua chave esteja funcionando corretamente:

  1. Etapa 1 Você precisará do OpenSSL. Você pode baixar o binário do projeto openssl-for-windows no Google Code.

  2. Etapa 2 Descompacte a pasta e copie o caminho da binpasta para a área de transferência.

    Por exemplo, se o arquivo estiver descompactado no local C:\Users\gaurav\openssl-0.9.8k_WIN32, copie o caminho C:\Users\gaurav\openssl-0.9.8k_WIN32\bin.

  3. Etapa 3 Adicione o caminho ao caminho do ambiente do sistema. Após a PATHdefinição da variável de ambiente, abra o cmd e digite este comando:

    C:\>keytool -exportcert -alias androiddebugkey -keystore [path to debug.keystore] | openssl sha1 -binary | openssl base64

    Digite sua senha quando solicitado. Se o comando funcionar, você verá uma chave.

GAURAV KUMAR GUPTA
fonte
FYI: Geralmente, a senha debug.keystore é apenas "android".
Alguém em algum lugar
11

Isso é trabalhado para mim com sucesso.

"C: \ Arquivos de Programas \ Java \ jdk1.6.0_26 \ bin \ keytool.exe" -exportcert -alias sociallisting -keystore "D: \ keystore \ SocialListing" | "C: \ cygwin \ bin \ openssl.exe" sha1 -binário | "C: \ cygwin \ bin \ openssl.exe" base64

Cuidado com o caminho abaixo:

  • "C: \ Arquivos de Programas \ Java \ jdk1.6.0_26 \ bin \ keytool.exe"
  • "D: \ keystore \ SocialListing" ou pode ser assim " C: \ Users \ Shaon.android \ debug.keystore "
  • "C: \ cygwin \ bin \ openssl.exe" ou pode ser assim : C: \ Users \ openssl \ bin \ openssl.exe

Se o comando funcionar com sucesso, você verá este comando:

Digite a senha do keystore: typeyourpassword

Chave criptografada **

Siddiq Abu Bakkar
fonte
10

é resposta tardia, mas ajudará pessoas preguiçosas como eu .. adicione esse código à sua classe Application, não há necessidade de baixar o openssl e não há necessidade de definir o caminho. só é necessário copiar esse código e o keyHash gerado no log.

import com.facebook.FacebookSdk;
public class MyApplication extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        FacebookSdk.sdkInitialize(getApplicationContext());
        AppEventsLogger.activateApp(this);
        printKeyHash();
    }

    private void printKeyHash() {
        try {
            PackageInfo info = getPackageManager().getPackageInfo(
                    getPackageName(), PackageManager.GET_SIGNATURES);
            for (Signature signature : info.signatures) {
                MessageDigest md = MessageDigest.getInstance("SHA");
                md.update(signature.toByteArray());
                Log.i("KeyHash:",
                        Base64.encodeToString(md.digest(), Base64.DEFAULT));
            }
        } catch (PackageManager.NameNotFoundException e) {
            Log.e("jk", "Exception(NameNotFoundException) : " + e);
        } catch (NoSuchAlgorithmException e) {
            Log.e("mkm", "Exception(NoSuchAlgorithmException) : " + e);
        }
    }
}

e não se esqueça de adicionar a classe MyApplication no manifesto:

<application
        android:name=".MyApplication"
</application>
Sagar Chavada
fonte
isso funciona para a versão de lançamento do facebook? se não como?
MetaSnarf
Este código é usado para gerar keyhash. E sua mesma chave para lançamento também. Para a versão de lançamento, defina o acesso público no console do desenvolvedor do facebook.
Sagar Chavada
Obtendo o erro "O contexto e o applicationId devem ser não nulos", quando usados ​​acima do código. @SagarChavada
Yesha Shah
6

Primeiro, navegue até a pasta Java / jre / bin no cmd cd c: \ Arquivos de Programas (x86) \ Java \ jre7 \ bin

Em seguida, use: [altere o caminho do debug.keystore para o local correto no seu sistema] instale o openssl (para windows 32 ou 64 conforme suas necessidades em c: \ openssl)

keytool -exportcert -alias androiddebugkey -keystore "C:\Users\vibhor\.android\debug.keystore" | "c:\openssl\bin\openssl.exe" sha1 -binary | "c:\openssl\bin\openssl.exe" base64

Portanto, o comando inteiro é assim: [solicita a senha do keystore na execução]

c:\Program Files (x86)\Java\jre7\bin>keytool -exportcert -alias androiddebugkey
-keystore "C:\Users\vibhor\.android\debug.keystore" | "c:\openssl\bin\openssl.ex
e" sha1 -binary | "c:\openssl\bin\openssl.exe" base64
Enter keystore password:
Vibhor Kashyap
fonte
5
Steps to create Hash Key. 
1: Download openssl from Openssl for Windows . I downloaded the Win64 version 
2:Unzip and copy all the files in the bin folder including openssl.exe(All file of bin folder) 
3:Goto to the folder where you installed JDK for me its C:\Program Files\Java\jdk1.8.0_05\bin 
4:Paste all the files you copied from Openssls bin folder to the Jdk folder. 

vá em C: \ Arquivos de Programas \ Java \ jdk1.8.0_05 \ bin e pressione a tecla Shift e clique com o botão direito do mouse e abra cmd

C:\Program Files\Java\jdk1.8.0_05\bin>//cmd path 

ou seja, para o Sha1 após essa
ferramenta - chave - exportar - alias androiddebugkey - keystore "C: \ Usuário \ ABC \ .android.keystore" | openssl sha1 -binário | openssl base64
// e ABC é o nome do sistema, coloque o nome do próprio sistema

sandhu
fonte
A qual binpasta você está se referindo na segunda etapa?
Ionut Necula
2

Eu usei este código:

Isso é trabalhado para mim com sucesso.

"C:\Program Files\Java\jdk1.6.0_26\bin\keytool.exe" -exportcert -alias sociallisting -
keystore "D:\keystore\SocialListing" | "C:\cygwin\bin\openssl.exe" sha1 -binary | 
"C:\cygwin\bin\openssl.exe" base64
Nguyễn Kim
fonte
2

use isso funcionou para mim. por favor mude seu caminho

C: \ Arquivos de programas \ Java \ jre7 \ bin keytool -exportcert -alias androiddebugkey -keystore "C: \ Usuários \ Ace.android \ debug.keystore" | "C: \ openssl \ bin

\ openssl.exe "sha1 -binário |" C: \ openssl \ bin \ openssl.exe "base64

Azahar
fonte
deve baixar openssl daqui code.google.com/p/openssl-for-windows/downloads/... e copiar a pasta bin e colar para C: \ OpenSSL \
Azahar
1

Downloads e descompactar

Você pode baixar o openssl para Windows 32 e 64 bits nos respectivos links abaixo:

https://code.google.com/archive/p/openssl-for-windows/downloads

OpenSSL para 64 bits OpenSSL para 32 bits

keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%\.android\debug.keystore | **"C:\Users\keshav.gera\openssl-0.9.8k_X64\bin**\openssl.exe" sha1 -binary | **"C:\Users\keshav.gera\openssl-0.9.8k_X64\bin**\openssl.exe" base64

Mudança importante no nosso caminho Aqui, além de instalar o SSL aberto no seu sistema

Está trabalhando sem dúvida

C:\Users\keshav.gera>keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%\.android\debug.keystore | "C:\Users\keshav.gera\openssl-0.9.8k_X64\bin\openssl.exe" sha1 -binary | "C:\Users\keshav.gera\openssl-0.9.8k_X64\bin\openssl.exe" base64

Digite a senha do keystore: android

**ZrRtxw36xWNYL+h3aJdcCeQQxi0=**

==================================================== ===========

usando manualmente por meio de codificação

import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.Signature;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;


private void PrintHashKey() {

        try {
            PackageInfo info = getPackageManager().getPackageInfo("**com.keshav.patanjalidemo  Your Package Name Here**", PackageManager.GET_SIGNATURES);
            for (Signature signature : info.signatures) {
                MessageDigest md = MessageDigest.getInstance("SHA");        
                md.update(signature.toByteArray());
                Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
            }
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }

    }
Keshav Gera
fonte
0

vá para o caminho da pasta bin no cmd e execute o seguinte comando

keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%\.android\debug.keystore | openssl sha1 -binary | openssl base64

você receberá seu hash chave

DjP
fonte
0

para usuários do Windows, faça o download do SSL aberto do repositório de códigos do Google https://code.google.com/p/openssl-for-windows/downloads/list

Após o download, extraia o conteúdo para uma pasta, de preferência na sua unidade c :.

Atualize sua variável de ambiente PATH para poder usar o .exe de qualquer local na sua linha de comando.

[windows 8] Para atualizar sua variável de ambiente PATH, clique em meu computador-> propriedades-> Configurações avançadas do sistema.

Clique na guia Avançado e clique no botão 'Variável de ambiente' na parte inferior da caixa de diálogo e selecione a entrada Caminho na seção 'Variáveis ​​do sistema' clicando em editar.

Cole o caminho para a pasta bin do download do openssl extraído e clique em ok.

Você precisará fechar e abrir e o prompt de comando que você pode ter iniciado anteriormente para poder carregar as configurações de caminho atualizadas.

Agora execute este comando:

keytool -exportcert -alias androiddebugkey -keystore "C: \ Usuários \ Oladipo.android \ debug.keystore" | openssl sha1 -binário | openssl base64

Você deve ver a chave do desenvolvedor.

Oladipo Olasemo
fonte
0

Isso funciona para mim:

C:\Users\example>keytool -exportcert -alias androiddebugkey -keystore 
"C:\Users\example\.android" | "C:\openssl\bin\openssl.exe" sha1 -binary 
| "C:\openssl\bin\oenssl.exe" base64
Manish
fonte
-1

Não é garantido que a geração de hashkey com esse único método openssl funcione. Se não funcionar para mim. Mas obrigado por me dar uma orientação para resolver meu problema.

Solução garantida: você precisa quebrar todo o comando em comandos separados e gravar a saída de cada execução no arquivo.

Você pode obter ajuda no seguinte link:

http://www.helloandroid.com/tutorials/using-facebook-sdk-android-development-part-1

Aproveitar :)

Nirav Shah
fonte