Ana Sayfa » *nix » openSSL ve TSA ile Otomatik Log Imzalayıcı (Shell) Script

openSSL ve TSA ile Otomatik Log Imzalayıcı (Shell) Script


BerbatKötüİdare EderGüzelHarika (Toplam 4 oy. 5 puan üzerinden ortalama 5,00 || Oy vererek siz de katkıda bulunabilirsiniz.)
Loading...

Warning: mysqli_query(): (HY000/3): Error writing file '/tmp/MYT9DOLi' (Errcode: 28 - No space left on device) in /usr/share/nginx/html/syslogs/wp-includes/class-wpdb.php on line 2349
Daha önce bir yazımda kullanarak 5651 sayılı kanunun gerektirdiği şekilde log dosyalarını zaman damgası ile imzalama işlerinin nasıl yapılacağını anlatan bir konuya değinmiştim. Bildiğiniz gibi 'i TSA patch'i ile derleyerek logları formal olarak zaman damgası ile imzalamak mümkün. shell

ile log imzalama işlemi güzel de, bu iş için manuel olarak bir takım komutlar vermeniz gerekiyor. Ancak log imzalama işleri periyodik olarak yapılması gereken bir prosedür olduğundan dolayı her seferinde bu komutları manuel olarak vermek ciddi bir külfet oluyor. İşte bu nedenle, imzalama işlerini otomatik olarak yapmak üzere crondan çalıştırılabilecek, aşağıdaki linklerden download edebileceğiniz bir shell script yazdım.

Scripti kullanabilmek için, sisteminizde TSA patch'i geçilmiş bir openSSL sürümü olması gerekir. Bu işi nasıl yapabileceğiniz ile ilgili bir dökümana http://www.syslogs.org/2009/08/openssl-ile-5651-sayili-kanun-geregi-log-imzalamak/ adresinden erişebilirsiniz.

Ayrıca, scriptin aşağıdaki linklerden erişebileceğiniz FreeBSD ve CentOS uyumlu olmak üzere iki farklı versiyonu bulunuyor.

Betiğin yaptığı işlemler sırası ile şöyle:

  1. İmzalama işleri için kullanılmak üzere belirlediğiniz dizin (mevcut değilse) oluşturuluyor.
  2. Log dosyası Çalışma dizinine kopyalanıyor.
  3. openSSL ve TSA kullanılacak imzalama işlemiyapılıyor.
  4. İmza işlerinden sonra, imzalı log dosyası doğrulanıyor.
    • İmza doğrulaması başarılı olursa, imzalanan dosyalar dosyaadi-tarih.tar.gz ismiyle
      paketlenip saklama dizinine taşınıyor. Son olarak çalışma dizinindeki işi bitmiş dosyalar siliniyor.
    • İmza doğrulaması başarısız olursa, hatalı imzalanmış olan dosyalar hatali-imza.tarih
      isimli dizine taşınıyor ve belirttiginiz e-posta adresine bir mail gönderiliyor.

Download

FreeBSD: http://www.syslogs.org/downloads/openssl-log-imzalayici-BSD.sh
CentOS:  http://www.syslogs.org/downloads/openssl-log-imzalayici-CNT.sh

İçerik

Hızlıca göz atmak isterseniz, içeriği de şu şekildedir:

FreeBSD

#!/bin/sh

# DEGISKENLER

# Imzali dosyalara ait tar.gz dosyasinin ismine eklenecek zaman bilgisi.
tarih=`date "+%Y%m%d-%H%M%S"`

# Imza islemi icin calisma dizinine kopyalanacak log dosyasinin adi.
dosya_adi=messages

# Log dosyasinin bulundugu dizin.
yol=/var/log

# Imzalama islerinin yapilacagi dizinin adi.
calisma_dizini=/var/imza_isleri

# Imza sonrasi olusan dosyalarin backuplanacagi dizin.
saklama_dizini=/var/imzali_loglar

#Hatali imzalanmis dosyalarin tasinacagi dizin.
hatali_imzalar=/var/imzali_loglar/hatali-imza-$dosya_adi-$tarih

# Imzalama sirasinda kullanilan CA private key'e ait public key.
CAPublicKEY=/CA/cacert.pem

# Zaman damgasi otoritesine ait public key.
TSAPublicKEY=/CA/tsacert.pem

# Imzalama sirasinda kullanilan TSA private key'e ait public key.
openssl=/usr/local/ssl/bin/openssl

# Imza islemi icin kullanilacak openssl binarysi.
openssl_conf=/usr/local/ssl/openssl.cnf # OpenSSL binary'sinin kullanacagi config dosyasi.

# TSA'ya ait Private Key'in Pass Pharse'i
password=parolaniz

# Hata durumunda gonderilecek bildirim maili'nin gidecegi posta adresinizi girin.
eposta_adresi=eposta-adresiniz

#--------------------------------------CALISMA DIZININE KOPYALAMA ISLEMI--------------------------------------#

    if [ ! -d $calisma_dizini ]

        then

                        mkdir $calisma_dizini

        fi

sleep 1

                        cp $yol/$dosya_adi $calisma_dizini

                cd $calisma_dizini

#--------------------------------------IMZALAMA ISLEMI--------------------------------------#

            $openssl ts -query -data $dosya_adi -no_nonce -out $dosya_adi.tsq
sleep 1
            $openssl ts -reply -queryfile $dosya_adi.tsq -out $dosya_adi.der -token_out -config $openssl_conf -passin pass:$password

#--------------------------------------DOGRULAMA ISLEMI--------------------------------------#

COMMAND=`$openssl ts -verify -data $dosya_adi -in $dosya_adi.der -token_in -CAfile  $CAPublicKEY -untrusted $TSAPublicKEY`

if [ "${COMMAND}" = "Verification: OK" ]

        then

                echo "Dogrulama tamam."

        else

                echo "Dogrulama Saglanamadi. Islemler geri aliniyor."

                        if [ ! -d $saklama_dizini ]

                        then

                        mkdir $saklama_dizini

                        fi

                                if [ ! -d $hatali_imzalar ]

                                then

                                mkdir $hatali_imzalar

                                fi

                                mv $calisma_dizini/$dosya_adi* $hatali_imzalar

                                echo "$dosya_adi isimli log dosyasi imzalamanamadi.
Imza islemi geri alinmis durumda. Hatali dosyalari $hatali_imzalar dizininde bulabilirsiniz. Problemin nedenini gormek icin scripti manuel olarak calistirabilirsiniz." | mail -s "Log Imzalayici" "$eposta_adresi"

                                exit
fi

sleep 1 

        if [ ! -d $saklama_dizini ]

        then

                        mkdir $saklama_dizini

        fi

sleep 1

                        tar cvfz $saklama_dizini/$dosya_adi.$tarih.tar.gz $dosya_adi*

sleep 1

                        rm  $calisma_dizini/$dosya_adi*

CentOS

#!/bin/sh

# DEGISKENLER

# Imzali dosyalara ait tar.gz dosyasinin ismine eklenecek zaman bilgisi.
tarih=`date "+%Y%m%d-%H%M%S"`           

# Imza islemi icin calisma dizinine kopyalanacak log dosyasinin adi.
dosya_adi=messages                      

# Log dosyasinin bulundugu dizin.
yol=/var/log

# Imzalama islerinin yapilacagi dizinin adi.
calisma_dizini=/var/imza_isleri

# Imza sonrasi olusan dosyalarin backuplanacagi dizin.
saklama_dizini=/var/imzali_loglar

#Hatali imzalanmis dosyalarin tasinacagi dizin.
hatali_imzalar=/var/imzali_loglar/hatali-imza-$dosya_adi-$tarih

# Imzalama sirasinda kullanilan CA private key'e ait public key.
CAPublicKEY=/CA/cacert.pem

# Zaman damgasi otoritesine ait public key.
TSAPublicKEY=/CA/tsacert.pem

# Imzalama sirasinda kullanilan TSA private key'e ait public key.
openssl=/usr/local/ssl/bin/openssl

# Imza islemi icin kullanilacak openssl binarysi.
openssl_conf=/usr/local/ssl/openssl.cnf # OpenSSL binary'sinin kullanacagi config dosyasi.

# TSA'ya ait Private Key'in Pass Pharse'i
password=parolaniz

# Hata durumunda gonderilecek bildirim maili'nin gidecegi posta adresinizi girin.
eposta_adresi=posta-adresiniz

#--------------------------------------CALISMA DIZININE KOPYALAMA ISLEMI--------------------------------------#

    if [ ! -d $calisma_dizini ]

        then

                        mkdir $calisma_dizini

        fi

sleep 1

                        cp $yol/$dosya_adi $calisma_dizini

                cd $calisma_dizini

#--------------------------------------IMZALAMA ISLEMI--------------------------------------#

            $openssl ts -query -data $dosya_adi -no_nonce -out $dosya_adi.tsq
sleep 1
            $openssl ts -reply -queryfile $dosya_adi.tsq -out $dosya_adi.der -token_out -config $openssl_conf -passin pass:$password

#--------------------------------------DOGRULAMA ISLEMI--------------------------------------#

COMMAND=`$openssl ts -verify -data $dosya_adi -in $dosya_adi.der -token_in -CAfile  $CAPublicKEY -untrusted $TSAPublicKEY`

if [ "$COMMAND" == "Verification: OK" ]

        then

                echo "Dogrulama tamam."

        else

                echo "Dogrulama Saglanamadi. Islemler geri aliniyor."

                        if [ ! -d $saklama_dizini ]

                        then

                        mkdir $saklama_dizini

                        fi

                            if [ ! -d $hatali_imzalar ]

                                                        then
                                                                mkdir $hatali_imzalar
                                                        fi

                                mv $calisma_dizini/$dosya_adi* $hatali_imzalar

echo "$dosya_adi isimli log dosyasi imzalanamadi.
Imza islemi geri alinmis durumda.
Hatali dosyalari $hatali_imzalar dizininde bulabilirsiniz.
Problemin nedenini gormek icin scripti manuel olarak calistirabilirsiniz." | mail -s "Log Imzalayici" "$eposta_adresi"

                                exit
fi

sleep 1 

        if [ ! -d $saklama_dizini ]

        then

                        mkdir $saklama_dizini

        fi

sleep 1

                        tar cvfz $saklama_dizini/$dosya_adi.$tarih.tar.gz $dosya_adi*

sleep 1

                        rm  $calisma_dizini/$dosya_adi*

Scripti daha fazla geliştirmek mümkün, ihtiyaçlarınıza göre düzenlemeleri yaptıktan sonra kullanabilirsiniz. Umarım işinize yarar.

Visited 3.861 times, 1 visit(s) today
Kategoriler: *nix,ipucu |

Bu yazılar da ilginizi çekebilir:


- Update: openSSL 1.0 TSA Özelliği – 5651’a Uygun Log İmzalamak
- OpenSSL ile 5651 Sayılı Kanun Gereği Log Imzalamak
- Bir Dizin Yapısının Kopyalanması
- Bash History’sine Tarih ve Saat Bilgisi Eklemek
- Linux Sistemlerde RAM Disk Oluşturulması

Yorumlar


  1. Halid | (Ekim 10th, 2009 11:22 pm)

    Harika olmuş :) Teşekkürler.

    [Cevapla]

  2. Alparslan | (Ekim 15th, 2009 9:18 am)

    Merhaba,

    birinci sorum; imzalama işleminde kullanılan TSA için özel/genel anahtarlar akıllı kartta kullanılmak isterse ne yapılması gerekir.

    ikincisi; TSA için alınan sertifika başka bir CA altındaysa yani CA sertifikası zincir şeklindeyse burada nasıl yazılabilir.

    KURUM ROOT CA
    KURUM SUBCA
    TSA

    [Cevapla]

    Cagri Ersen tarafından yanıtlandı.

    Merhaba,

    Her iki soru icin de, enine boyuna test etmedim ama konu imzalama isleminin dogru anahtarlarla yapilmasi oldugundan dolayi hangi mecralarda kullanildigi ile ilgili bir sıkıntı yasamamalisiniz.

    Ama bu net cevap degildir, cunku dedigim gibi ihtiyacim disinda kalan sekillerde denemeler yapmadim.

    [Cevapla]

  3. Alparslan | (Ekim 15th, 2009 9:21 am)

    Merhaba, ek olarak bu signserver uygulaması bu imzalama scriptiyle karşılaştırılabilirmisiniz?

    signserver.org

    tşk.

    [Cevapla]

    Cagri Ersen tarafından yanıtlandı.

    Bu konuda da verebilecek net bir yanitim yok, cunku hic incelemedim signserver uygulamasini.

    [Cevapla]

  4. metin | (Şubat 3rd, 2010 9:22 am)

    Selamlar.

    Debian Etch ile bir önceki manuel log imzala işlerini hallettim.
    Acaba yukarıdaki hangi script sürekli olarak log imzalama işimi görür. ?

    Teşekkürler iyi çalışmalar.

    [Cevapla]

    Cagri Ersen tarafından yanıtlandı.

    Merhaba,

    CentOS versiyonunu kullanabilirsiniz, hata alırsanız durumu burada paylasirsaniz cozumunu de bulabiliriz.

    [Cevapla]

    metin tarafından yanıtlandı.

    Selamlar.

    Evet. Centos versiyonu ile sorunsuz çalıştı. Teşekkürler…

    [Cevapla]

  5. ayhan elmas | (Mayıs 12th, 2010 9:53 pm)

    sistem: centos 5.4
    openssl 1.1.0 stabil son surum yuklu

    /usr/local/ssl/bin/openssl ts -reply -queryfile messages.tsq -out messages.tsr -config /usr/local/ssl/openssl.cnf

    Using configuration from /usr/local/ssl/openssl.cnf
    Response is not generated.
    46947602110416:error:2F083075:time stamp routines:TS_RESP_CTX_set_signer_cert:invalid signer certificate purpose:ts_rsp_sign.c:206:

    yardımlarınızı bekliyorum

    [Cevapla]

    Cagri Ersen tarafından yanıtlandı.

    Imzalama islemini yapan sertifikada bir sorun oldugunu soyluyor. Gozunuzden kacan bir nokta olmamasi icin asagidaki adreste bulunan kurulum islemlerini yeniden gozden gecirebilirsiniz.
    Bunun yani sira, openssl’in yeni sürümünde ts özelliği geliyor, dolayısı ile patch gecmenize gerek kalmiyor. Onu da deneyebilirsiniz.

    http://www.syslogs.org/2009/08/openssl-ile-5651-sayili-kanun-geregi-log-imzalamak/

    [Cevapla]

  6. ahmet seker | (Mayıs 18th, 2010 8:07 pm)

    evet aynı sorun ile bende karsılastım. bende cevap bekliyorum

    [Cevapla]

  7. zeynel buyuk | (Mayıs 20th, 2010 12:39 pm)

    Merhaba, yukarıda karşılaşılan sorunlar ile bende karşılaştım. Sistem openssl 1.0.0 kullanıyorum. Sertifika oluşturma sırasında makalede yazan şekilde yapmaya çalıştığımda openssl ca -config /usr/local/ssl/openssl.cnf -in tsareq.csr -out tsacert.pem satırını çalıştırdığımda aşagıdaki hatayı alıyorum.

    default is an unsupported message digest type
    15207:error:02001002:system library:fopen:No such file or directory:/usr/src/lib/libssl/src/crypto/bio/bss_file.c:126:fopen(‘/CA/index.txt.attr’,’rb’)
    15207:error:2006D080:BIO routines:BIO_new_file:no such file:/usr/src/lib/libssl/src/crypto/bio/bss_file.c:129:
    15207:error:0E078072:configuration file routines:DEF_LOAD:no such file:/usr/src/lib/libssl/src/crypto/conf/conf_def.c:197:

    Ancak openssl.cnf dosyasında bulunan
    # For the CA policy
    [ policy_match ]
    countryName = match
    stateOrProvinceName = match
    organizationName = match

    Satırları optional olarak değiştirip tekrar denediğimde o zaman sertifika oluşturabiliyorum. O zamanda log imzalama kısmında yukarıdaki arkadaşların aldığı hata mesajını alıyorum. İşin içinden bir türlü çıkamadım, ne yapmak lazım nerede hata yapıyorum bir türlü bulamadım. yardımlarınız bekliyorum. Kolay gelsin.

    [Cevapla]

    Cagri Ersen tarafından yanıtlandı.

    Merhabalar,

    Sorununuzun nedeni sertifika bilgileriniz ile alakali gibi gorunuyor. http://www.syslogs.org/openssl-ile-5651-sayili-kanun-geregi-log-imzalamak/ adresindeki yazida, sertifika bilgileri konusunda su sekilde bir ibare var:

    Bu kısımda ise yukarıda gördüğünüz ülke, bölge, şehir, firma ismi, e-mail gibi bilgiler soruluyor. Bu soruları yukarıdaki cevaplarda verildiği gibi formal bir şekilde yanıtlayın. Bu kısıma girdiğiniz bilgileri bir yere not edin. Çünkü biraz sonra yapılacak Time Stamp Authority için oluşturulacak private key’de de aynı bilgilerin kullanılması gerekiyor.

    Certificate authority sertifikasi ile Time Stamp Authority icin olusturulan private key’inizin bilgileri ayni degil ise bu sorunu yasayabilirsiniz. Bir kontrol etmenizi oneririm.

    [Cevapla]

    Tuğrul tarafından yanıtlandı.

    Dokümanlar için teşekkürler, gerçekten çok güzel olmuş herşey açık.

    bugün 10’un üzerinde denemeler yaptım
    aşamaları aynen takip ettim, openssl 1.0.0 ve sizin patch’li olan sürümü de denedim.

    ancak response oluşturma noktasında ben de aynı hatayı alıyorum:
    :error:2F083075:time stamp routines:TS_RESP_CTX_set_signer_cert:invalid signer certificate purpose:ts_rsp_sign.c:206:

    tüm satırlarda /usr/local/ssl/bin/openssl’i kullandım.
    Bi çözüm bulan var mı? Her şeyi aynı çok yaptım, çok defa teyit ettim.

    [Cevapla]

    Cagri Ersen tarafından yanıtlandı.

    Merhabalar,

    Son zamanlarda ayni hatayi alan bir kac kisiden yorum geldi.

    Kurulum adimlarini ve scripti bir kac kez deneyerek, dogruluguna %100 emin olarak yayinladim ama son zamanlarda bir sorun var gorunuyor.

    Asamalari tekrar deneyip kontrol edecegim.

    [Cevapla]

    Tuğrul tarafından yanıtlandı.

    Arkadaşlar yanlış anlamasın, script’i henüz denemedim;
    bu hata ile karşılaşanları burada gördüğüm için yazdım.
    http://www.syslogs.org/2009/08/openssl-ile-5651-sayili-kanun-geregi-log-imzalamak/
    linkinde yer alan aşamalarda response üretme noktasında takılmıştım, script’ten kaynaklanan bir hata olmayabilir…
    iyi çalışmalar, teşekkürler

    [Cevapla]

    Tuğrul tarafından yanıtlandı.

    oldu sonunda, zannediyorum sorun şurada, openssl.cnf dosyasında şu satırların yorumlarını açmak lazım:

    +extendedKeyUsage = critical,timeStamping
    +keyUsage = nonRepudiation, digitalSignature

    bir sorum daha olacak; token_out nedir, token_out olmadan sadece response oluşturarak imzalamış sayılıyor muyuz?

    [Cevapla]

    Cagri Ersen tarafından yanıtlandı.

    openssl 1.0 sürümünde mi düzel yoksa her iki sürüm için de geçerli mi bu durum?

    token_out response’un bir alternatifidir response oluşturmak da imzalamak icin yeterli oluyor.

    [Cevapla]

    Emre tarafından yanıtlandı.

    Ben de birkaç gündür log imzalama olayına göz gezdiriyorum ancak yukardaki sorunla ben de karşılaştım ve dediğiniz gibi extendedKeyUsage ve keyUsage ibarelerini açınca openssl.cnf dosyasında bir düzelme olmadı.

    Acaba örnek bir openssl.cnf hazırlamanız mümkün müdür? (bu arada fedora 12 üzerinde çalışıyorum. openssl rpm’inin ts desteği mevcut)

    bu arada dokümantasyon çok güzel olmuş, ellerinize sağlık

    [Cevapla]

    Cagri Ersen tarafından yanıtlandı.

    Selamlar,

    Sistemime openssl-1.0 kurup yazida anlasttigim sekilde imzalama islemlerini yeniden yaptim. Sonuc olarak imzalama islemi sorunsuz gerceklesti. Bu yorumun en altinda imzalama islemlerine dair islem loglarını bulabilirsiniz.

    openssl.cfg dosyasi ise default kuruldugu seklide, sadece yazida anlattigim sekilde sertifika dosyalarinin yeri ./demoCA yerine /CA olarak set edilmis durumda. (Sertifikalar o dizinde duruyorlar:

    
    dir             = /CA                  # Where everything is kept
    
    dir             = /CA                  # TSA root directory
    

    Yukaridaki bu iki degisiklikten baska bir sey yapmadim cfg dosyasinda.

    Imza islemlerina ait komutlar ve ciktilari:

    [root@centlab001]# /usr/local/ssl1.0/bin/openssl
    OpenSSL> version
    OpenSSL 1.0.0 29 Mar 2010
    
    [root@centlab001 imza]# cp /var/log/messages /imza
    
    [root@centlab001 imza]# cd /imza
    
    [root@centlab001 imza]# /usr/local/ssl1.0/bin/openssl ts -query -data messages -no_nonce -out messages.tsq
    
    
    RESPONSE OLUSTURMAK
    [root@centlab001 imza]# /usr/local/ssl1.0/bin/openssl ts -reply -queryfile messages.tsq -out messages.tsr -config /usr/local/ssl1.0/openssl.cnf
    Using configuration from /usr/local/ssl1.0/openssl.cnf
    Enter PEM pass phrase:
    Response has been generated.
    
    
    RESPONSE UZERINDEN DOGRULAMA
    [root@centlab001 imza]# /usr/local/ssl1.0/bin/openssl ts -verify -queryfile messages.tsq -in messages.tsr -CAfile /CA/cacert.pem -untrusted /CA/tsacert.pem
    Verification: OK
    
    LOG DOSYASI UZERINDEN DOGRULAMA
    [root@centlab001 imza]# /usr/local/ssl1.0/bin/openssl ts -verify -data messages -in messages.tsr -CAfile /CA/cacert.pem -untrusted /CA/tsacert.pem
    Verification: OK
    
    
    TOKEN
    [root@centlab001 imza]# /usr/local/ssl1.0/bin/openssl ts -reply -queryfile messages.tsq -out messages.der -token_out -config /usr/local/ssl1.0/openssl.cnf
    Using configuration from /usr/local/ssl1.0/openssl.cnf
    Enter PEM pass phrase:
    Response has been generated.
    
    VERIFY TOKEN
    [root@centlab001 imza]# /usr/local/ssl1.0/bin/openssl ts -verify -data messages -in messages.der -token_in -CAfile /CA/cacert.pem -untrusted /CA/tsacert.pem
    Verification: OK
    

    [Cevapla]

  8. Tuğrul | (Mayıs 22nd, 2010 8:25 pm)

    openssl 1.0.0 sürümünde düzeldi. patch’li sürümü denemedim.
    ancak farklı bişey daha yapmışım; başka bir dokümantasyondan taklit ettiğim /CA/serial dosyası için:
    echo ‘100001’ > serial

    ayrıca openssl.cnf dosyasında “$dir/tsaserial” dosyasının da arandığını gördüm. bu dosya bulunmadığı için
    “cp serial tsaserial”
    yaptık ama kullanılıyor mu ne için kullanılıyor hangisi düzeltti derseniz pek emin değilim :)

    [Cevapla]

    Veli ADIGÜZEL tarafından yanıtlandı.

    bende aynı yerde takılıp kaldım şifre sormadan

    # openssl ts -reply -queryfile messages.tsq -out messages.tsr -config /usr/local/openssl/openssl.cnf
    Using configuration from /usr/local/openssl/openssl.cnf
    Response is not generated.
    674878472:error:2F083075:time stamp routines:TS_RESP_CTX_set_signer_cert:invalid signer certificate purpose:ts_rsp_sign.c:206:

    boyle cıkıyor @Tugrul beyin dediklerini de denedim ama olmadı denemelere devam :)

    [Cevapla]

  9. Murat | (Ekim 26th, 2010 4:30 pm)

    Merhaba,
    Dökümanlar çok güzel hazırlanmış, teşekkürler.
    Ben de aynı hatayı alıyordum;
    “time stamp routines:TS_RESP_CTX_set_signer_cert:invalid signer certificate purpose:ts_rsp_sign.c:206”
    Sonra 3 şey yaptım ama hangisi sayesinde düzeldi bilmiyorum. Anlatayım, denersiniz.
    1) Diğer dökümanda anlatıldığı gibi sertifikaları oluştururken #openssl …
    olan kısımları
    #/usr/local/ssl/bin/openssl şeklinde girdim ve her işlemde “-config /usr/local/ssl/openssl.cnf” kısmını da ekledim.(sistemimde 2 farklı openssl var, birisi 0.9k, diğeri 1.0.0_2, o sebeple bütün işlemleri 1.0.0_2 ile tekrardan yaptım)
    2) Kök sertifika ile TS sertifikasının şifrelerini aynı verdim.
    3) Extra özellikler parolasını boş bıraktım (bir yerde sorun çıkarıyor diye duyduğumu hatırlıyorum ama emin değilim)

    Sonuç olarak artık çalışıyor. Bilmiyorum neden :)

    [Cevapla]

    TicTacTux tarafından yanıtlandı.

    Merhabalar Murat bey;

    1., 2. ve 3. maddeleri de yaptım ancak bir türlü log imzalama başlıklarından “Request için TSA’ya bir Response Oluşturtmak” adımındaki, aşağıdaki hatayı geçemiyoruz.

    Dökümanınızı birebir uyguluyoruz ancak bu adımda bir sorun var. Ya bu adımdaki yöntem yanlış yada sertifika oluşturma adımlarında bir sorun var.

    /usr/local/ssl/bin/openssl ts -reply -queryfile system.log.tsq -out system.log.tsr -config /usr/local/ssl/openssl.cnf

    Using configuration from /usr/local/ssl/openssl.cnf
    Response is not generated.
    674760520:error:2F083075:time stamp routines:TS_RESP_CTX_set_signer_cert:invalid signer certificate purpose:ts_rsp_sign.c:206:

    [Cevapla]

    Murat tarafından yanıtlandı.

    Freebsd üzerinde mi çalışıyorsunuz? openssl versiyonunuz nedir acaba?

    [Cevapla]

    TicTacTux tarafından yanıtlandı.

    Merhabalar;

    Evet FreeBSD ve versionlar aşağıdaki gibidir;
    FreeBSD 8.1r6 ve OpenSSL 1.0.0-beta4-dev

    ilginizden dolayı teşekkürler.

    [Cevapla]

  10. ekrem | (Aralık 10th, 2010 1:14 pm)

    Verdiğiniz script ve konu anlatımı çok işime yaradı teşekkürler.
    Sorum verdiğiniz script crontab içinde çalıştıramadım.Yanlış yaptığım yer neresidir.Örnek deneme amaçlı 1 dk bir çalıştırsın diyorum.(manuel olarak çalıştırdığım scirpt sıkıntı yok)

    crontab -e

    1 * * * * /root/Desktop/(Script İsmi)

    Teşekkürler

    [Cevapla]

    Cagri Ersen tarafından yanıtlandı.

    Selamlar,

    Script bir shell scripti oldugu icin dosyayi bir kabuk üzerinden calistirmalisiniz. Bu nedenle cron’da su sekilde bir duzenleme yapabilirsiniz..

    1 * * * * /bin/sh /root/Desktop/(Script İsmi)

    Bu sekilde dosyayi sh kabugu uzerinden calistirmis oluyorsunuz.

    [Cevapla]

    ekrem tarafından yanıtlandı.

    Cevabınız için teşekkür ederim

    Crontab dosyamı dediğiniz gibi
    1 * * * * /bin/sh /root/Desktop/(Script İsmi)

    düzeltmeme rağmen ,otomatik olarak çalışmıyor. Fakat komut satırında script i çalıştırdığımda sıkıntı yok.Fedora 14 üzerinde deniyorum.Değişik makinlara fedora kurulumu yaptım sonuç aynı

    Ne yapabilirim?Teşekkürler

    [Cevapla]

    ekrem tarafından yanıtlandı.

    Cagri Bey;

    Bir düzeltme bilgi vereyim
    1 * * * * /bin/sh /root/Desktop/(Script İsmi)

    komutu dk bir kere çalışmadı.Garip bir şekilde saatte bir çalıştı.Onun yerine

    53 12 * * * /bin/sh /root/Desktop/(Script İsmi)

    yazdım.saat 12:53 otomatik çalıştı. Teşekkürler

    Bu noktada bir sorum var ,diyelimki scriptle squid.access ait logları her gün aldırdığımızı varsayalım.Bu işleme 13/12/2010 da başlayım ve her gece 02:00 de bir gün öncesini log aldığımızı düşünelim.
    Log alma tarihimiz 16/12/2010 geldiğinde ,günlük alınan log dosyasının içeriği 13-16 Aralık 2010 tarihinimi içerecek? yoksa her gece aldığımız loglar bir gece önceki logları alıp , işlem bittikten sonra silecekmi?
    Eğer silme işlemi yoksa bu scripte tarih aralığı bildirerek nasıl çalıştırabiliriz.Örneğin
    * 16/12/2010 da sadece 15/12/2010 loglarını al.Diğer tarih alma nasıl yaparız?
    * 1 ay boyunca squid proxy den çıkış yaptırdık.Geçen aydaki sadece belli birkaç günün loglamak istiyorum.Nasıl yaparız

    Teşekkürler

    [Cevapla]

    Cagri Ersen tarafından yanıtlandı.

    Selamlar,

    1 dakikada bir calismasini istemeniz durumunda

    */1 * * * * /bin/sh /root/Desktop/(Script İsmi)
    

    seklinde calistirmaniz gerekir.

    Log alma tarihi, log dosyasinin rotate edilmesi ile alakalidir. Cunku imzalayici script, imzala dediginiz zaman imzalanacak dosyanin bir kopyasini almakta ve imzalama islemini kopya uzerinde yapmaktadir.

    Yani orjinal dosyada kac gunluk gecmis veri tutuluyorsa, imzalanan veri de o kadar gecmise yonelik oluyor.

    Misal olarak, sisteminize squid.access log dosyasinin her gun saat 23:59’da rotate edilmesini ve imzalama isleminin ise 23.58’de yapilmasini soylerseniz, 13-16 araligi icin elinizde gun sayisi kadar imzalanmis log dosyasi olur ve bu dosyalarin her biri tam 23 saat 58 dakikalik veri icerir.
    (örnek olarak 13-12-2010, 23:59’dan – 14-12-2010 23.58’e kadar olan veri imzalanir)

    [Cevapla]

    ekrem tarafından yanıtlandı.

    Çağrı Bey;

    Peki ben access.log dosyamın içindeki log verisini bütün günler değil ,günlük olarak almak istersem scrpitin içine ne eklemem gerekir.

    Örnek access log dosyam 01-31 aralık arası verileri tutuyor. Ama ben sadece içinden 02/12/2010 ait verileri zaman damgası yapmak istiyorum.
    Kısacası scriptim her çalıştığında bana 24 saatlik(veyahut ben tarih aralığı girebilirmiyim?) log bilgilerini damgalasın.

    İlginiz için çok teşekkür ederim

    [Cevapla]

    Cagri Ersen tarafından yanıtlandı.

    Script sadece, belirtilen log dosyasini imzalar, neyi imzaladigina bakmaz.

    Dolayisi ile belirtilen dosyada sadece imzalanmasini istediginiz verinin bulunmasi gerekir. Bunun icin de örnegin, log dosyasini imzalamak üzere kopyalamadan once, orjinal log dosyasından imzalanmasi istenen veri cekilip baska bir dosyaya yazilabilir ve o dosya imzalanabilir.

    Scripti bu sekilde düzenleyebilirsiniz.

    [Cevapla]

  11. koray | (Mart 29th, 2011 5:11 pm)

    Harika olmus balından yenmez şimdi bunun :)

    [Cevapla]

  12. Cüneyt | (Mayıs 17th, 2011 8:13 pm)

    Ubuntu server üzerinde kullanacak arkadaşlar
    bu “if [ “$COMMAND” == “Verification: OK” ]” kısım ile ilgili bir hata alırlarsa eğer #!/bin/sh olan kısmı #!/bin/bash olarak değiştirdikten sonra sorunsuz bir şekilde kullanabilirler.

    [Cevapla]

    Cagri Ersen tarafından yanıtlandı.

    Katkı için teşekkür ederim.

    Bir önceki commentinizde belirttiğiniz saat’in ileri olması konusunda yol alabildiniz mi ? Size yardimci olmak icin o konunun olasi nedenlerine bakacağım ancak henüz fırsat olmadı.

    [Cevapla]

  13. Alpaslan Kocabas | (Eylül 9th, 2011 2:09 pm)

    /usr/local/ssl/openssl.cnf dosyasi icinde asagidaki satirlari aktif ettikten veya asagidaki gibi düzenledikten sonra islemlere baslayin arkadaslar.

    extendedKeyUsage = critical,timeStamping
    keyUsage = nonRepudiation, digitalSignature

    ilgili dosyada keyUsage satiri zaten açik olabilir veya acik oldugu halde bu sekilde olmayabilir. olmasi gereken sekilde düzenledikten sonra islemlere basladiginizda sorunsuz olarak bütün asamalari gectiginizi goreceksiniz.

    sevgiler…

    [Cevapla]

    c tarafından yanıtlandı.

    Merhaba,

    centos 6.5 32 bit kullanıyorum bütün herşeyi yaptım sadece logları otomatik olarak saat başı imzalatmak kaldı ama bu verdiğiniz scripti nasıl kullanıcam otomatize nasıl edicem bana bu konuda yardımcı olurmusunuz centos da biraz yabancıyım scripti düzenleme yaptım ama nasıl çalıştırıcam neye giricem veya hangi komutu uygulayacamki devamlı logları saat başı imzalasın.

    [Cevapla]

    Cagri Ersen tarafından yanıtlandı.

    Selamlar,

    Scriptin açıklama satırlarında nasıl düzenleneceği yazmakta (bundan daha açık yazılabileceğini sanmıyorum.) Düzenlemeri kendinize göre yaptıktan sonra scriptin belirttiğiniz periyodlarda çalıştırılması için cron’a (scheduled tasks’ın linux tarafındaki ismi) eklemeniz lazım. Cron ile ilgili detaylı bilgi için http://kvz.io/blog/2007/07/29/schedule-tasks-on-linux-using-crontab/ adresinden yararlanabilirsiniz.

    [Cevapla]

    c tarafından yanıtlandı.

    çok teşekkür ederim fakat bişey daha sormak istiyorum.

    benim loglar yaratılırken devamlı farklı isimde yaratılıyor

    scripte ise sabit bir isim verilmiş

    # Imza islemi icin calisma dizinine kopyalanacak log dosyasinin adi.
    dosya_adi=messages

    ben klasör içinde hangi isimde olursa olsun bu dosyaları imzalatmak istiyorum dersem nasıl bir yol izlemeliyim.

    teşekkürler.

    [Cevapla]

    Cagri Ersen tarafından yanıtlandı.

    Selamlar,

    Malesef o scripti sadece tek bir dosyayı imzalamak üzere düzenlemiştim (örnek olması açısından.)

    Sizin bir dizin içerisindeki tüm log dosyalarını imzalama gibi bir gereksiniminiz varsa, shell scripti buna göre düzenlemeniz gerekecektir. Alternatif olarak, log dizininizin bir kopyasını alıp, tarihleyip gzip paketi haline getirerek tek dosyay düşürebilir ve oluşan bu tek gzip dosyasını imzalayabilirsiniz. Bunun için de gene script üzerinde düzenleme yapmanız gerekecek.

    [Cevapla]

  14. Gokan | (Kasım 14th, 2014 10:50 pm)

    Bash hakkında bir soru sorucaktım. Yazınızla ilgi değil ama…
    Amacım şu örneğin *nix üzerinde bir serviste fail olduğunda bash kabuğum
    test etsin ve gereğini yapsin. Ornegin bir sekilde postfix durdugunda otomatik olarak bunu anlayip restart edebilsin. Soyle bir sey yapiyorum, lakin calismiyor.

    #! / bin / bash
    COMMAND = `telnet localhost 25`
    if [“$ COMMAND” == “220 localhost.localdomain ESMTP Postfix”]
    echo “postfix ok”
    else
    echo “servis yenizden basliyor.”
    service postfix restart
    exit

    [Cevapla]

  15. Zeki | (Eylül 9th, 2015 3:02 am)

    Merhaba;

    Şu sıralar sistemde şu hatayı alıyorum ve imzalama gerçekleştirmiyor. Sorun sanırım sertifika tarihinin geçmesinden kaynaklı. Nasıl düzeltebilirim?

    Using configuration from /usr/local/ssl/openssl.cnf
    Response has been generated.
    139823737276072:error:2F06D064:time stamp routines:TS_VERIFY_CERT:certificate verify error:ts_rsp_verify.c:246:Verify error:certificate has expired

    [Cevapla]

Trackbacks

Yorumda bulunun.