Como criptografar dados no bitbucket sem perder as ferramentas git diff?

4

Com base nessa pergunta: criptografar arquivos antes de enviá-los para a nuvem .

considerando o openssl: Por exemplo, ao usar o openssl, podemos gravar os arquivos fooenc.sh :

#!/bin/sh 
openssl enc -bf -nopad -pass pass:1KjeHD8d6YUI80bIIEAQ9iYr@njqLw3T

e foodec.sh :

#!/bin/sh
openssl enc -bf -nopad -d -pass pass:1KjeHD8d6YUI80bIIEAQ9iYr@njqLw3T

No arquivo .git/config em seu repositório, você deve especificar esses filtros;

[filter "crypt"]
    clean = fooenc.sh
    smudge = foodec.sh

eu tentei essa abordagem e me ocorreu:

error: cannot run fooenc.sh: No such file or directory
error: cannot fork to run external filter ourenc.sh
error: external filter fooenc.sh failed

Onde devo colocar este * .sh?

Mesmo que se eu tentar colocar

 [filter "crypt"]
        clean = openssl enc -bf -nopad -pass pass:1KjeHD8d6YUI80bIIEAQ9iYr@njqLw3T
        smudge = openssl enc -bf -nopad -d -pass pass:1KjeHD8d6YUI80bIIEAQ9iYr@njqLw3T

até pensei que me ocorresse:

bad decrypt
3074115260:error:0607F08A:digital envelope routines:EVP_EncryptFinal_ex:data not multiple of block length:evp_enc.c:414:
error: external filter openssl enc -bf -nopad -pass pass:1KjeHD8d6YUI80bIIEAQ9iYr@njqLw3T failed 1
error: external filter openssl enc -bf -nopad -pass pass:1KjeHD8d6YUI80bIIEAQ9iYr@njqLw3T failed

Outras abordagens foram implementadas como git-remote-encrypt ou outra usando GnuPG :

Em .git/info/attributes use:

myPrivateInfosFile filter=gpg diff=gpg

No seu arquivo repo .git/config :

[filter "gpg"]
smudge = gpg -d -q --batch --no-tty
clean = gpg -ea -q --batch --no-tty -r C920A124
[diff "gpg"]
textconv = decrypt

Por fim, usando a abordagem git-remote-encrypt , ocorreu-me:

gcrypt: Remote ID is :id:k/a9sdsd332e3442wdaJ
Counting objects: 102, done.
Compressing objects: 100% (71/71), done.
Total 102 (delta 8), reused 0 (delta 0)
gcrypt: Encrypting to: --throw-keyids --default-recipient-self
gcrypt: Requesting manifest signature
gpg: no default secret key: secret key not available
gpg: [stdin]: sign+encrypt failed: secret key not available
error: failed to push some refs to 'gcrypt::rsync:https://[email protected]/ourstuffteam/our.git'

Nada disso foi uma abordagem bem-sucedida.

** De acordo com esta ou outras novas abordagens. Como posso criptografar os dados no git mais corretamente no bitbucket? **

    
por ePascoal 12.04.2015 / 13:33

1 resposta

1

Eu usei sua tentativa de tentar e erro e encontrei uma solução para seu erro git-remote-gcrypt . Veja minha pergunta Configurando um repositório git criptografado .

Você simplesmente precisa executar

gpg --gen-key

que inicia um diálogo para criar uma chave gpg que pode ser usada posteriormente para o envio para bitbucket. Compare o gpg man ual

How to manage your keys

       This section explains the main commands for key management

       --gen-key
              Generate a new key pair using the current  default  parameters.   This  is  the
              standard command to create a new key.

              There  is also a feature which allows you to create keys in batch mode. See the
              the manual section ''Unattended key generation'' on how to use this.

No entanto, ainda não sei sobre o uso futuro.

editar

Eu apenas tentei clonar esse repositório em outra máquina. Obviamente, é necessário usar a gpg -key (e a chave secreta, cujo nome significa que é uma má idéia), então decidi simplesmente copiar a minha para a outra máquina. Infelizmente, isso não funciona dessa maneira, de modo que provavelmente precisamos adicionar outros usuários.

    
por 03.01.2017 / 15:33