Reprepro dışa aktarma imzalama anahtarını bulamadı


13

Önceki bir sistem yöneticisi tarafından yıllar önce kurulmuş olan özel bir debian depomuz var. Paketler, burada repo sunucusundaki kök kullanıcı için gösterildiği gibi eski anahtar 7610DDDE (iptal etmek zorunda kaldım) tarafından imzalandı.

# gpg --list-keys
/root/.gnupg/pubring.gpg
------------------------
pub   1024D/2D230C5F 2006-01-03 [expired: 2007-02-07]
uid                  Debian Archive Automatic Signing Key (2006)  <ftpmaster@debian.org>

pub   1024D/7610DDDE 2006-03-03 [revoked: 2016-03-31]
uid                  Archive Maintainer <root@xxxxxxxxxx.com>

pub   4096R/DD219672 2016-04-18
uid                  Archive Maintainer <root@xxxxxxxxxx.com>

Aşağıdaki tüm komutlar kök kullanıcı gibidir. İmzalama için açıkça oluşturduğum yeni alt anahtarı kullanmak için depo / conf / dağıtım dosyasını değiştirdim:

Architectures: i386 amd64 source
Codename: unstable
Components: main
...
SignWith: DD219672

Ama bir paketi güncellemek için dput kullandığımda

Could not find any key matching 'DD219672'!
ERROR: Could not finish exporting 'unstable'!
This means that from outside your repository will still look like before (and
should still work if this old state worked), but the changes intended with this
call will not be visible until you call export directly (via reprepro export)

Ve doğrudan reprepro export çalıştırdığımda:

# reprepro -V export unstable
Exporting unstable...
 generating main/Contents-i386...
 generating main/Contents-amd64...
Could not find any key matching 'DD219672'!
ERROR: Could not finish exporting 'unstable'!

Ben Googled ve reprepro uygun gnupg dizini bulma ile ilgili olası bir sorun gösteren eski konuların bir çift bulundu ... bu yüzden yukarıdaki aynı sonuçları ile bu çalıştı:

# GNUPGHOME=/root/.gnupg reprepro -V export unstable

Bir iş parçacığı iyi çalışıyor gibi görünüyordu bir kukla dosyayı imzalayarak anahtarı test önerdi ... en azından hiçbir hata bildirdi ve bittikten sonra bir 576 bayt bla.gpg dosyası ile sona erdi.

# touch bla
# gpg -u DD219672 --sign bla

Reprepro man sayfası ayrıca "İmzalama ile ilgili sorunlar varsa, gpg'nin değeri nasıl yorumlayabileceğini görmek için gpg --list-secret-keys değerini deneyebilirsiniz . Bu komut herhangi bir anahtarı veya birden çok anahtarı listelemezse, başka bir değer (keyid gibi), bu gpg benzersiz bir anahtarla daha kolay ilişkilendirilebilir. " Bu yüzden ben de kontrol ve var:

# gpg --list-secret-keys DD219672
sec   4096R/DD219672 2016-04-18
uid                  Archive Maintainer <root@xxxxxxxxxx.com>

Ve nihayet ilk önce reprosumuzu ayarlayan sys yöneticisi ile iletişime geçebildim ve o bir parola olmadan bir anahtar denemenizi önerdi. Böylece yeni bir imzalama anahtarı oluşturdum, DD219672, yayınladı, yukarıdaki adımları tekrarladı, ancak aynı sonuçla.

Bugün, adam sayfalarını daha fazla okuyup inceledikten ve reprepro çalıştırdığımda pgp-agent'ın otomatik olarak başlatıldığını belirledikten sonra, bir süre kovalamaya karar verdim.

İle bir gpg-agent.conf ekledim

debug-level 7
log-file    /root/gpg.agent.log
debug-all

Ve günlükte gpg-agent'ın anahtarları bulamadığını görebiliyorum

2016-04-18 15:54:00 gpg-agent[15582] DBG: chan_5 -> OK Pleased to meet you, process 18903
2016-04-18 15:54:00 gpg-agent[15582] DBG: chan_5 <- RESET
2016-04-18 15:54:00 gpg-agent[15582] DBG: chan_5 -> OK
2016-04-18 15:54:00 gpg-agent[15582] DBG: chan_5 <- OPTION ttyname=/dev/pts/0
2016-04-18 15:54:00 gpg-agent[15582] DBG: chan_5 -> OK
2016-04-18 15:54:00 gpg-agent[15582] DBG: chan_5 <- OPTION ttytype=xterm-256color
2016-04-18 15:54:00 gpg-agent[15582] DBG: chan_5 -> OK
2016-04-18 15:54:00 gpg-agent[15582] DBG: chan_5 <- GETINFO version
2016-04-18 15:54:00 gpg-agent[15582] DBG: chan_5 -> D 2.1.11
2016-04-18 15:54:00 gpg-agent[15582] DBG: chan_5 -> OK
2016-04-18 15:54:00 gpg-agent[15582] DBG: chan_5 <- OPTION allow-pinentry-notify
2016-04-18 15:54:00 gpg-agent[15582] DBG: chan_5 -> OK
2016-04-18 15:54:00 gpg-agent[15582] DBG: chan_5 <- OPTION agent-awareness=2.1.0
2016-04-18 15:54:00 gpg-agent[15582] DBG: chan_5 -> OK
2016-04-18 15:54:00 gpg-agent[15582] DBG: chan_5 <- AGENT_ID
2016-04-18 15:54:00 gpg-agent[15582] DBG: chan_5 -> ERR 67109139 Unknown IPC command <GPG Agent>
2016-04-18 15:54:00 gpg-agent[15582] DBG: chan_5 <- HAVEKEY C2C5C59E5E90830F314ABB66997CCFAACC5DEA2F 416E8A33354912FF4843D52AAAD43FBF206252D9 8CE77065EA6F3818A4975072C8341F32CB7B0EF0
2016-04-18 15:54:00 gpg-agent[15582] DBG: chan_5 -> ERR 67108881 No secret key <GPG Agent>
2016-04-18 15:54:00 gpg-agent[15582] DBG: chan_5 <- [eof]

Şimdiye kadar gpg-agent'ın HAVKEY'de listelediği anahtarları nerede bulduğunu ve güncellenmiş paketlerimizi imzalamak için yeni anahtarı DD219672'yi nasıl bulacağınızı anlayamadım.

Yanıtlar:


19

Aynı sorunu yaşadım ve çok fazla hayal kırıklığı yaşandıktan sonra neler olduğunu takip ettim.

repreproDayanmaktadır aracı kullandığı gpgme, gnupg2. Bunun yakın tarihli bir sürümü, gizli anahtarlığın ele alınış biçimini değiştirdi: https://www.gnupg.org/faq/whats-new-in-2.1.html

Genel anahtar çiftlerini iki dosyada tutmak için kullanılan gpg: pubring.gpgve secring.gpg... GnuPG 2.1 ile bu değişti ... Secring olmayan yönteme geçişi kolaylaştırmak için gpg, a'nın varlığını algılar secring.gpgve anahtarları anında dönüştürür gpg-agent anahtar deposuna (bu, private-keys-v1.dGnuPG giriş dizininin altındaki dizindir ( ~/.gnupg)). Bu sadece bir kez yapılır ve varolan secring.gpgartık gpg tarafından dokunulmaz. Bu, eski GnuPG sürümlerinin GnuPG 2.1 ile birlikte bulunmasına izin verir. Ancak, GnuPG'nin 2.1 öncesi sürümleri kullanılırken yeni gpg'yi kullanan özel anahtarlarda yapılan herhangi bir değişiklik görünmez ve tersi de geçerlidir.

Böylece, gpg ile yeni bir anahtar oluşturursanız, gpg2 onu görmez ve bunun tersi de geçerlidir.

Benim için çalışan hızlı düzeltme:

gpg --export-secret-keys | gpg2 --import -

Ve eğer başka yöne gitmeniz gerekiyorsa, elbette:

gpg2 --export-secret-keys | gpg --import -

Kurulumunuza bağlı olarak, --export-secret-subkeys

Yukarıdakileri yaptıktan sonra repreproyeni anahtarımla düzgün çalıştım.


2
Dostum, bunu izlemek için bir madalyayı hak ediyorsun.
Andrew Schulman

2

Benim için sorun kullanıcı olarak anahtarları oluşturmak ve kök olarak reprepro koştu oldu .

"Olmadan sudo" oluşturduğum anahtarların yerelime eklenmiş olmasıydı pubring.gpg. Koştuğumda sudo reprepro ...kök olarak çalıştırıyorum ve bu yüzden anahtarın kökünü bulmaya çalışıyor pubring.gpgve açıkçası bir tane bulamıyor.

Çözüm, tüm gpgkomutları root (eq. sudo -iVe sonra gpg --gen-key) olarak çalıştırmaktı. Çalıştırdığınızda sudo gpg --list-keysistediğiniz tuşları ve satırı gördüğünüzden emin olun /root/.gnupg/pubring.gpg.

Umarım yardımcı olur!

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.