Ana Sayfa » *nix » OpenSSL ile 5651 Sayılı Kanun Gereği Log Imzalamak

OpenSSL ile 5651 Sayılı Kanun Gereği Log Imzalamak


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

time-stamp5651 sayılı kanun, internet ile ilgili herhangi bir iş yapan kurum ya da firmalara çeşitli sorumluluklar yüklemekte. Bu sorumluluklardan birisi de Trafik Erişim bilgisinin 6 ay boyunca saklanması ve bu dosyaların değiştirilmediğini ispat edebilmek için Elektronik Zaman Damgası ile imzalanmasıdır. Kanuna göre bu işlem, tüm internet ve yer sağlayıcı firmaların yerine getirmesi gereken bir zorunluk. Üstelik kendi sunucuları bulunan her firma da yer sağlayıcısı kapsamına girmekte.

Bir başka değişle, örneğin web sitenizi kendi sunucularınızda barındırıyorsanız Yer Sağlayıcı kapsamına giriyorsunuz. Durum bu olunca da sunucularınız ile ilgili log dosyalarını elektronik zaman damgası ile imzalamanız ve arşivlemeniz gerekiyor. Ayrıca, Toplu Internet Kullanım Sağlayıcıları ismi ile adlandırılan duruma göre, örneğin şirketinizde internet kullanımı bulunuyorsa, IP dağıtım loglarını (DHCP vs.) da imzalamalı ve arşivlemelisiniz.

Piyasada log imzalamak üzere geliştirilmiş programlar mecvut ancak bu paralı yazılımları kullanmak yerine aynı işi ile de yapmak mümkün. Bu yazıda bu işin nasıl yapıldığından bahsetmek istiyorum.

Kurulum ve uygulama bölümlerine bakmadan önce kısaca zaman damgasının ne olduğuna değinmek iyi olacaktır.

Elektronik Zaman Damgası


Direk kurulum notlarına geçmeden önce, zaman damgası ve çalışma mantığına kısaca değinmek istiyorum.

Zaman Damgası Nedir ?

Elektronik Zaman Damgası, elektronik ortamdaki log, döküman sözleşme vs. gibi herhangi bir verinin, belirli bir zamandan önce var olduğunu ispat etmek için kullanılır. Örneğin, bir log dosyasını zaman damgası ile imzalarsanız, o log dosyasının imzalandığı tarihte orjinal haliyle var olduğunu, sonradan herhangi bir değişikliğe uğramadığını ispat edebilirsiniz.

Bu işlem, imzalanacak dosyanın bir hash’inin (kısaca sayısal özet’inin) çıkarılması ve bu hash’in x tarihinde alındığının bilgisinin tutulmasından ibarettir. Bu şekilde eğer ileriki bir tarihte dosyayı değiştirirseniz, imzalanmış olan hash değeri, dosya’nın kendisi ile eşleşmeyeceği için dosyanın değiştirildiği anlaşılacaktır.

Elektronik Zaman Damgası ile İmza İşlemleri Nasıl Yapılabilir ?

Elektronik zaman damgası ile imzalama işlemi için izlenebilecek bir iki yol var; eğer Windows kullanıyorsanız TİB (Telekominikasyon İletişim Başkanlığı)’nın bu iş için yayınladığı IP İmzalayıcı isimli programı kullanabilirsiniz. Ya da piyasada bu iş için hizmet veren firmalardan yararlanabilirsiniz. Ayrıca ile imzalama yöntemini uygulayabilirsiniz. Zaten bu yazının konusu da bu.

ve Time Stamp Authority Patch’i


Önemli Güncelleme: Sisteminizde openSSL’in 1.0.x sürümü bulunuyorsa, 1.0 ile TSA özelliği default olarak geldiğinden dolayı, “OpenSSL’in TS Patchi İle Derlenerek Kurulması” bölümünde anlatılan patch geçme işlemini yapmanıza gerek bulunmamaktadır. Ancak 1.0.x sürümüne özel olarak conf dosyasında yapılması gereken iki küçük değişiklik bulunmaktadır. Bu değişiklikleri http://www.syslogs.org/openssl-1-0-x-tsa-ozelligi-ve-5651a-uygun-log-imzalamak/ adresinde anlatıldığı şekilde yaptıktan sonra, bu yazıya “OpenSSL ve Time Stamping Authority Yapılandırması” isimli bölümden devam edebilirsiniz.

OpenSSL’in TS (Time Stamping Authority) isimli bir özelliği bulunuyor. Ancak bu desteğin OpenSSL’e kazandırılabilmesi için TS isimli patch’in geçilmesi gerekiyor. TS desteğinin bir sonraki sürümde OpenSSL’e ekleneceği söyleniyor. Ancak şu an için böyle bir durum olmadığı için patch’i manuel olarak geçmeliyiz.

Şimdi bu işin nasıl yapıldığından bahsetmek istiyorum.

Warning UYARI: TS patch’inin şu anki son sürümü, 0.9.8c’dir ve OpenSSL’in 0.9.8c sürümünde çalışmaktadır. Ancak OpenSSL’in şu anki son sürümü 0.9.8k’dır. Yani TS patch’i güncel sürümde çalışmamakta ve bu nedenle OpenSSL 0.9.8c sürümünü kullanmamız gerekmektedir. Bu nedenle log imzalama işlemleri için kullanacağınız bilgisayarın dışarıdan erişilebilir bir makina olmamasına dikkat ediniz. Böylece, OpenSSL’in eski sürümlerine ait güvenlik açıklarından etkilenmemiş olursunuz.

Şimdi OpenSSL’i TS patch’i ile derleyip sisteme kuralım.

OpenSSL’in TS Patchi İle Derlenerek Kurulması

Normalde, sisteminizde OpenSSL’in son sürümü yüklüdür, fakat biz OpenSSL 0.9.8c sürümümü ts-0.9.8c patchi ile derleyerek ayrıca kuracağız. Bu şekilde sistemde ayrı pathlerde duran iki adet OpenSSL binary’si bulunacak ve imzalama işleri için 9.0.8c sürümüne ait binary’i kullanacağız.

Warning UYARI: OpenSSL kurulumu yapacağınız bilgisayarda, daha önceden kaynak koddan derleme sureti ile OpenSSL kurduysanız, şimdi yapılacak OpenSSL kurulumunun var olan binary dosyalarını değiştireceğini bilmelisiniz. Böyle bir durumunuz varsa, şimdiki kurulumda binary dosyalarının başka bir path’e yüklenmesini sağlamak için ./config sırasında –openssldi=/dizin şeklinde yeni bir path belirtiniz.

Aşağıdaki adımları izleyerek kurulumu yapabiliriz.
Ben dosyaları düzenli olması açısından /usr/local/src dizinine download ediyorum. Bu dizine girelim.

# cd /usr/local/src/

OpenSSL’in 0.9.8c sürümünü download edelim:

# wget http://www.openssl.org/source/openssl-0.9.8c.tar.gz

indirdiğimiz paketi açıyoruz:

# tar xvfz openssl-0.9.8c.tar.gz

openssl-0.9.8c dizinine girelim.

# cd openssl-0.9.8c

Bu dizindeyken, patch dosyasını download ediyoruz:

# wget http://www.opentsa.org/ts/ts-20060923-0_9_8c-patch.gz

Patch’i uyguluyoruz.

# gzip -cd ts-20060923-0_9_8c-patch.gz | patch -p1

ve OpenSSL’i derleyerek kuruyoruz.

# ./config
# make
# make install

Herhangi bir sorunla karşılaşmadıysanız, kurulum tamam demektir. Yeni kurulan OpenSSL’e ait dosyalar sistemde /usr/local/ssl/ path’in de tutuluyor. TS desteklik OpenSSL binary’si bu dizinin bin klasorunde bulunuyor; yani /usr/local/ssl/bin/openssl

Şimdi ts desteğinin çalışıp çalışmadığını teyit etmek için şu komutu verelim:

# /usr/local/ssl/bin/openssl ts

Çıktı şu şekilde olacaktır:

usage:
ts -query [-rand file:file:...] [-config configfile] [-data file_to_hash] [-digest digest_bytes][-md2|-md4|-md5|-sha|-sha1|-mdc2|-ripemd160] [-policy object_id] [-no_nonce] [-cert] [-in request.tsq] [-out request.tsq] [-text]
or
ts -reply [-config configfile] [-section tsa_section] [-queryfile request.tsq] [-passin password] [-signer tsa_cert.pem] [-inkey private_key.pem] [-chain certs_file.pem] [-policy object_id] [-in response.tsr] [-token_in] [-out response.tsr] [-token_out] [-text] [-engine id]
or
ts -verify [-data file_to_hash] [-digest digest_bytes] [-queryfile request.tsq] -in response.tsr [-token_in] -CApath ca_path -CAfile ca_file.pem -untrusted cert_file.pem

Evet görüldüğü üzere yeni kurduğumuz OpenSSL’in TS desteği var. Şimdi sırada, TS kullanımı için OpenSSL’in yapılandırılmasında.

OpenSSL ve Time Stamping Authority Yapılandırması

Imzalama işlemlerini yapabilmek için öncesinde, bir takım yapılandırma ayarlarını tamamlamak gerekiyor. Sırası ile işlemler şu şekilde:

Bu işlem için bir çalışma dizini oluşturun. Örneğin sertifikalar isimli bir dizin:

# mkdir /sertifikalar

Şimdi bu dizine girip, OpenSSL için bir certificate authority oluşturalım.

# cd /sertifikalar
# openssl req -config /usr/local/ssl/openssl.cnf -days 1825 -x509 -newkey rsa:2048 -out cacert.pem -outform PEM

Bu komutu verdiğiniz zaman, certificate authority için oluşturulacak private key için kullanılacak parolayı belirlemeniz istenecek, belirleyeceğiniz parola ileride lazım olacağı için önemlidir; unutmamalısınız:

Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:

Pass phrase (parola) belirledikten sonra sertifika bilgilerini belirlemeniz istenecek.

Country Name (2 letter code) [AU]:TR
State or Province Name (full name) [Some-State]:Marmara
Locality Name (eg, city) []:Istanbul
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Cagri AS
Organizational Unit Name (eg, section) []:CagriAS
Common Name (eg, YOUR name) []:Cagri Ersen
Email Address []:cagri.ersen@gmail.com

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.

İşlem bittiği zaman çalışma dizininde, aşağıdaki gibi iki dosya oluşturulduğunu göreceksiniz:

-rw-r--r-- 1 root root 1675 Aug 25 01:15 cacert.pem
-rw-r--r-- 1 root root 1743 Aug 25 01:15 privkey.pem

cacert.pm isimli dosya, Certificate Authority’nin public key’i, diğeri ise private key’idir.

Aslında, OpenSSL kurulum aşamasında ön tanımlı olarak public ve private key’leri oluşturuyor. Fakat bizim kendi key’lerimizi oluşturmamız ve default gelen key’lerin yerine koymamız gerekiyor. Şimdi oluşturulan bu key’leri yerlerine taşıyalım.

Ben daha derli toplu olması için Certificate Authority ile ilgili dosyaları / (kök) dizininin altında CA isimli klasorde tutuyorum. OpenSSL ile birlikte gelen Certificate Authority dosyalar, download edip açtığımız openssl-0.9.8c/apss dizininde demoCA ismi ile duruyor. (Yazının başında download için /usr/local/src dizinini belirlemiştik.) Şimdi demoCA isimli bu dizini /CA olarak kopyalayalım ve yeni sertifikalar için burada bir newcerts isimli bir dizin oluşturalım.

# cp -r /usr/local/src/openssl-0.9.8c/apps/demoCA /CA
# mkdir /CA/newcerts

Şu an CA dizini içerisinde default gelen public ve private key’ler de bulunuyor. Bunların bir yedeğini alalım ve sonrasında kendi oluşturduğumuz dosyaları buraya taşıyalım:
Önce public key:

# mv /CA/cacert.pem /CA/cacert.pem.old
# cp /sertifikalar/cacert.pem /CA/

Şimdi aynı işlemleri, private key için de yapıyoruz:

# mv /CA/private/cakey.pem /CA/private/cakey.pem.old
# cp /sertifikalar/privkey.pem /CA/private/cakey.pem

Dosyaları yerlerine taşıdıktan sonra openssl.cnf dosyasında bir iki değişiklik yapmamız gerekiyor.

openssl.cnf dosyasını editleyin:

vi /usr/local/ssl/openssl.cnf

Dosya içerisinde ./demoCA yazan yerleri /CA olarak değiştirin. Ilgili ibareler dosyada iki yerde geçiyor ve son halleri aşağıdaki gibi olmalı:

dir             = /CA                  # Where everything is kept

dir             = /CA                  # TSA root directory

Değişiklikleri yaptıktan sonra dosyadan kaydederek çıkın.

Sırada, Time Stamp Authority (TSA) için bir private key oluşturma işlemi var.
Şu şekilde yapıyoruz.

# cd /sertifikalar
# openssl genrsa -aes256 -out tsakey.pem 2048

Komutu verdiğiniz zaman gene bir parola belirlemeniz istenecek:

Enter pass phrase for tsakey.pem:
Verifying - Enter pass phrase for tsakey.pem:

Elbette bu parolayı da unutmayın.

Şimdi bu key ile birlikte, Certificate Authority’den bir sertifika isteğinde bulunuyoruz:

# openssl req -new -key tsakey.pem -out tsareq.csr

Komutu girdiğiniz aman aşağıdaki gibi parolanızı girmenizi isteyen bir çıktı alacaksınız.

Enter pass phrase for tsakey.pem:

Bu key hemen bir önceki adımda, tsakey.pem dosyasını oluştururken belirlediğimiz paroladır.
Parolanızı girdikten sonra, aşağıdaki görüldüğü gibi, ülke, bölge, şehir, firma ismi, e-mail gibi bilgilerin girilmesi istenecek.

Warning UYARI: Bu bilgilerin, certificate authority’nin private key’ini oluştururken girdiğiniz bilgilerle aynı olması gerekir. Aksi halde log imzalama işlemlerine hata alabilirsiniz.

Bizim örneğimize göre çıktı ve cevaplar şu şekilde olmalı:

Country Name (2 letter code) [AU]:TR
State or Province Name (full name) [Some-State]:Marmara
Locality Name (eg, city) []:Istanbul
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Cagri AS
Organizational Unit Name (eg, section) []:CagriAS
Common Name (eg, YOUR name) []:Cagri Ersen
Email Address []:cagri.ersen@gmail.com

Ayrıca extra attiribute’lerin sorulduğu şöyle bir çıktı daha alacaksınız:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:sifre
An optional company name []: Bos gecebilirsiniz.

Şimdi, /sertifikalar dizininde tsareq.csr isimli bir request dosyası oluştu. Artık bu csr. dosyasını kullanarak time stamp authority’nin public key’ini oluşturacağız.

Şu şekilde:

# openssl ca -days 1825 -config /usr/local/ssl/openssl.cnf -in tsareq.csr -out tsacert.pem

Komutu girdiğiniz zaman aşağıdaki gibi görünen ve Certificate Authority için belirlediğiniz parolayı girmenizi isteyen çıktıyı alırsınız. (Cert. Authority’nin private key’ini oluştururken belirlediğiniz parola’nızı girin.

Using configuration from /usr/local/ssl/openssl.cnf
Enter pass phrase for /CA/private/cakey.pem:

Sonrasonda da sertifikanın imzalanmasına onay vermenizi isteyen aşağıdaki gibi bir ekran ile karşılaşırsınız:

Check that the request matches the signature
Signature ok
Certificate Details:
        Serial Number: 286 (0x11e)
        Validity
            Not Before: Aug 24 23:24:35 2009 GMT
            Not After : Aug 24 23:24:35 2010 GMT
        Subject:
            countryName               = TR
            stateOrProvinceName       = Marmara
            organizationName          = Cagri AS
            organizationalUnitName    = CagriAS
            commonName                = Cagri Ersen
            emailAddress              = cagri.ersen@gmail.com
        X509v3 extensions:
            X509v3 Basic Constraints:
                CA:FALSE
            Netscape Comment:
                OpenSSL Generated Certificate
            X509v3 Subject Key Identifier:
                5F:C3:B7:8A:95:A1:2C:6D:CA:9D:74:CA:BF:F9:5A:49:A7:EB:33:62
            X509v3 Authority Key Identifier:
                keyid:34:4A:79:0E:42:7B:50:B1:32:54:4C:C5:72:1E:96:D2:6D:FA:72:A2

            X509v3 Extended Key Usage: critical
                Time Stamping
Certificate is to be certified until Aug 24 23:24:35 2010 GMT (365 days)
Sign the certificate? [y/n]:y

y dediğiniz zaman tekrar onay isteyen bir ekran gelecek ve sertifika imzalanacak:

1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated

Şimdi, TSA’nın public key’i /sertifikalar dizininde tsacert.pem ismi ile oluşturuldu. Artık son adım olarak, hem public hem de private key’i yerlerine taşıyabiliriz.

# cp /sertifikalar/tsacert.pem /CA/
# cp /sertifikalar/tsakey.pem /CA/private/

Evet artık, oluşturduğumuz time stamp authority’i kullanarak log imzalama işlemlerini yapabiliriz.

OpenSSL TSA Kullanarak Log İmzalamak


Log imzalamayla ilgili komutları vermeden önce, log dosyasının teoride nasıl imzalandığından bahsetmek istiyorum.

Nasıl ?

OpenSSL TSA kullanarak, bir log dosyasını ya da herhangi bir dökümanı imzalamak istediğiniz zaman teorik olarak şu işlem adımları gerçekleştirilir.

  1. TSA istemcisi, imzalanacak log dosyasının bir hash’ini (özetini) alır ve TSA’ya (time stamp authority)’e gönderir.
  2. Time Stamp Authority’si ise gelen bu hash değerine, tarih ve zaman bilgisini ekler, imzalar ve time stamp token olarak geri gönderir. Bu şekilde TSA, kendisine gelen hash’ın o tarihteki durumunu belgelendirir.
  3. TSA client ise, gelen bu token’in imzasını ve token’in hash değerinin gönderilenle aynı olup olmadığını kontrol eder.

Bu şekilde imzalam işlemi tamamlanmış olur. Şimdi bir log dosyasını imzalamanın nasıl yapılabileceğine bakalım.

TSA ile Bir Log Dosyasının İmzalanması


Ben örnek olarak, /imza isimli bir dizin açacağım ve örneğin sunucunun /var/log/messages isimli log dosyasını buraya alıp imzaya tabi tutacağım.

Önce dizini açıp imzalanacak log dosyasının bir kopyasını buraya alalım:

# mkdir /imza
# cd /imza
# cp /var/log/messages .

Şimdi imzalama işlemine başlayabiliriz.

Log Dosyası İçin TSA Request’i Oluşturmak


Öncelikli olarak, teorik bölümde bahsettiğim gibi log dosyasının imzalanması için bir request oluşturuyoruz:

# /usr/local/ssl/bin/openssl ts -query -data messages -no_nonce -out messages.tsq

Not: Gördüğünüz gibi bu komutta kullanilan openssl /usr/local/ssl/bin/ dizini altındaki openssl binary’si. Bu sürümde ts desteği var. Komut satırından direk olarak openssl derseniz /usr/bin altındaki openssl binary’si çalıştırılır ve hata alırsınız.

Komutu verdiğiniz zaman imza dizini içerisinde messages.tsq isimli request dosyasının oluşturulduğunu görürsünüz.

Şimdi request için TSA’ın bir cevap (response) oluşturmasını söyleyeceğiz.

Request için TSA’ya bir Response Oluşturtmak


Bu işlemi şu şekilde yapıyoruz:

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

Bu komutu girdiğiniz zaman, aşağıda görüldüğü şekilde, TSA’nın private key’ini oluştururken belirlediğiniz parolanın girilmesi istenecek:

Using configuration from /usr/local/ssl/openssl.cnf
Enter PEM pass phrase:

Parolayı girdiğiniz zaman response oluşturulacak ve messages.tsr isimli (time stamp response) cevap dosyası oluşturulacak.
tsr dosyasını normal yollar ile editler ya da içine bakarsanız herhangi bir şey anlayamazsınız. Ancak insanların okuyabileceği (human-readable) şekilde içerisini okumak için şu komutu verebilirsiniz.

# /usr/local/ssl/bin/openssl ts -reply -in messages.tsr -text

Komutun çıktısı aşağıdaki gibi olacaktır:

Status info:
Status: Granted.
Status description: unspecified
Failure info: unspecified

TST info:
Version: 1
Policy OID: 1.2.3.4.1
Hash Algorithm: sha1
Message data:
    0000 - 5b b7 ce 87 d9 ad 41 3d-ea 2b c0 34 33 21 e4 2b   [.....A=.+.43!.+
    0010 - 6b 68 41 5e                                       khA^
Serial number: 0x01
Time stamp: Aug 25 00:20:44 2009 GMT
Accuracy: 0x01 seconds, 0x01F4 millis, 0x64 micros
Ordering: yes
Nonce: unspecified
TSA: DirName:/C=TR/ST=Marmara/O=Cagri AS/OU=CagriAS/CN=Cagri Ersen/emailAddress=cagri.ersen@gmail.com
Extensions:

Gördüğünüz gibi imzalanma tarihi, imzalayan otoritenin bilgileri falan mevcut.

Şimdi bir de, request dosyasını kullanarak time stamp response yerine time stamp token oluşturalım.

Request için TSA’ya bir Token Oluşturtmak


Bu işi de şu komut ile yapabilirsiniz:

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

Parolanız tekrar sorulacak:

Using configuration from /usr/local/ssl/openssl.cnf
Enter PEM pass phrase:
Response has been generated.

Sonrasında ise token oluşturulacak.

Response has been generated.

Şimdi imza dizini içinde bir de messages.der isimli bir token bulunuyor. Bu token’in içeriğini okumak için komut şu:

# /usr/local/ssl/bin/openssl ts -reply -in messages.der -token_in -text -token_out

Çıktı

Version: 1
Policy OID: 1.2.3.4.1
Hash Algorithm: sha1
Message data:
    0000 - 5b b7 ce 87 d9 ad 41 3d-ea 2b c0 34 33 21 e4 2b   [.....A=.+.43!.+
    0010 - 6b 68 41 5e                                       khA^
Serial number: 0x02
Time stamp: Aug 25 00:29:09 2009 GMT
Accuracy: 0x01 seconds, 0x01F4 millis, 0x64 micros
Ordering: yes
Nonce: unspecified
TSA: DirName:/C=TR/ST=Marmara/O=Cagri AS/OU=CagriAS/CN=Cagri Ersen/emailAddress=cagri.ersen@gmail.com
Extensions:

Daha detaylı görmek isterseniz aşağıdaki komutu kullanabilirsiniz:

# /usr/local/ssl/bin/openssl asn1parse -in messages.der -inform DER

Çıktı şuna benzer olacaktır:

Version: 1
Policy OID: 1.2.3.4.1
Hash Algorithm: sha1
Message data:
    0000 - 5b b7 ce 87 d9 ad 41 3d-ea 2b c0 34 33 21 e4 2b   [.....A=.+.43!.+
    0010 - 6b 68 41 5e                                       khA^
Serial number: 0x02
Time stamp: Aug 25 00:29:09 2009 GMT
Accuracy: 0x01 seconds, 0x01F4 millis, 0x64 micros
Ordering: yes
Nonce: unspecified
TSA: DirName:/C=TR/ST=Marmara/O=Cagri AS/OU=CagriAS/CN=Cagri Ersen/emailAddress=cagri.ersen@gmail.com
Extensions:
# /usr/local/ssl/bin/openssl ts -reply -in messages.der -token_in -text -token_out
# /usr/local/ssl/bin/openssl asn1parse -in messages.der -inform DER
    0:d=0  hl=4 l= 873 cons: SEQUENCE
    4:d=1  hl=2 l=   9 prim: OBJECT            :pkcs7-signedData
   15:d=1  hl=4 l= 858 cons: cont [ 0 ]
   19:d=2  hl=4 l= 854 cons: SEQUENCE
   23:d=3  hl=2 l=   1 prim: INTEGER           :03
   26:d=3  hl=2 l=  11 cons: SET
   28:d=4  hl=2 l=   9 cons: SEQUENCE
   30:d=5  hl=2 l=   5 prim: OBJECT            :sha1
   37:d=5  hl=2 l=   0 prim: NULL
   39:d=3  hl=3 l= 238 cons: SEQUENCE
   42:d=4  hl=2 l=  11 prim: OBJECT            :id-smime-ct-TSTInfo
   55:d=4  hl=3 l= 222 cons: cont [ 0 ]
   58:d=5  hl=3 l= 219 prim: OCTET STRING      [HEX DUMP]:3081D802010106042A0304013021300906052B0E03021A050004145BB7CE87D9AD413DEA2BC0343321E42B6B68415E020102180F32303039303832353030323930395A300A020101800201F48101640101FFA08186A48183308180310B30090603550406130254523110300E060355040813074D61726D6172613111300F060355040A130843616772692041533110300E060355040B130743616772694153311430120603550403130B436167726920457273656E3124302206092A864886F70D010901161563616772692E657273656E40676D61696C2E636F6D
  280:d=3  hl=4 l= 593 cons: SET
  284:d=4  hl=4 l= 589 cons: SEQUENCE
  288:d=5  hl=2 l=   1 prim: INTEGER           :01
  291:d=5  hl=3 l= 154 cons: SEQUENCE
  294:d=6  hl=3 l= 147 cons: SEQUENCE
  297:d=7  hl=2 l=  11 cons: SET
  299:d=8  hl=2 l=   9 cons: SEQUENCE
  301:d=9  hl=2 l=   3 prim: OBJECT            :countryName
  306:d=9  hl=2 l=   2 prim: PRINTABLESTRING   :TR
  310:d=7  hl=2 l=  16 cons: SET
  312:d=8  hl=2 l=  14 cons: SEQUENCE
  314:d=9  hl=2 l=   3 prim: OBJECT            :stateOrProvinceName
  319:d=9  hl=2 l=   7 prim: PRINTABLESTRING   :Marmara
  328:d=7  hl=2 l=  17 cons: SET
  330:d=8  hl=2 l=  15 cons: SEQUENCE
  332:d=9  hl=2 l=   3 prim: OBJECT            :localityName
  337:d=9  hl=2 l=   8 prim: PRINTABLESTRING   :Istanbul
  347:d=7  hl=2 l=  17 cons: SET
  349:d=8  hl=2 l=  15 cons: SEQUENCE
  351:d=9  hl=2 l=   3 prim: OBJECT            :organizationName
  356:d=9  hl=2 l=   8 prim: PRINTABLESTRING   :Cagri AS
  366:d=7  hl=2 l=  16 cons: SET
  368:d=8  hl=2 l=  14 cons: SEQUENCE
  370:d=9  hl=2 l=   3 prim: OBJECT            :organizationalUnitName
  375:d=9  hl=2 l=   7 prim: PRINTABLESTRING   :CagriAS
  384:d=7  hl=2 l=  20 cons: SET
  386:d=8  hl=2 l=  18 cons: SEQUENCE
  388:d=9  hl=2 l=   3 prim: OBJECT            :commonName
  393:d=9  hl=2 l=  11 prim: PRINTABLESTRING   :Cagri Ersen
  406:d=7  hl=2 l=  36 cons: SET
  408:d=8  hl=2 l=  34 cons: SEQUENCE
  410:d=9  hl=2 l=   9 prim: OBJECT            :emailAddress
  421:d=9  hl=2 l=  21 prim: IA5STRING         :cagri.ersen@gmail.com
  444:d=6  hl=2 l=   2 prim: INTEGER           :011E
  448:d=5  hl=2 l=   9 cons: SEQUENCE
  450:d=6  hl=2 l=   5 prim: OBJECT            :sha1
  457:d=6  hl=2 l=   0 prim: NULL
  459:d=5  hl=3 l= 140 cons: cont [ 0 ]
  462:d=6  hl=2 l=  26 cons: SEQUENCE
  464:d=7  hl=2 l=   9 prim: OBJECT            :contentType
  475:d=7  hl=2 l=  13 cons: SET
  477:d=8  hl=2 l=  11 prim: OBJECT            :id-smime-ct-TSTInfo
  490:d=6  hl=2 l=  28 cons: SEQUENCE
  492:d=7  hl=2 l=   9 prim: OBJECT            :signingTime
  503:d=7  hl=2 l=  15 cons: SET
  505:d=8  hl=2 l=  13 prim: UTCTIME           :090825002909Z
  520:d=6  hl=2 l=  35 cons: SEQUENCE
  522:d=7  hl=2 l=   9 prim: OBJECT            :messageDigest
  533:d=7  hl=2 l=  22 cons: SET
  535:d=8  hl=2 l=  20 prim: OCTET STRING      [HEX DUMP]:B947896286699B2D9501B88F81311C32E778A5D0
  557:d=6  hl=2 l=  43 cons: SEQUENCE
  559:d=7  hl=2 l=  11 prim: OBJECT            :id-smime-aa-signingCertificate
  572:d=7  hl=2 l=  28 cons: SET
  574:d=8  hl=2 l=  26 cons: SEQUENCE
  576:d=9  hl=2 l=  24 cons: SEQUENCE
  578:d=10 hl=2 l=  22 cons: SEQUENCE
  580:d=11 hl=2 l=  20 prim: OCTET STRING      [HEX DUMP]:277FF0E8A397E4BC4D3F6415BCD44065CD5D8500
  602:d=5  hl=2 l=  13 cons: SEQUENCE
  604:d=6  hl=2 l=   9 prim: OBJECT            :rsaEncryption
  615:d=6  hl=2 l=   0 prim: NULL
  617:d=5  hl=4 l= 256 prim: OCTET STRING      [HEX DUMP]:91C49E10CCABEB1D1BEE5E9F4FE6D72F60A30B65DC7D134753D9980361F7A44E4E49153EFE2917DCFEE0F730C9600B0055AF2C960F5DEDC976C6426D4D6798B0F2D7074E0125E6DB16D2F185E7E77C7907BE6E0002A306FA31C84DDC6D5930170865047C4B59C92DA4391A4FCDAF3D341AC562ECAE862D487EE2B4E1EFD84A70C9A3496CE8136AF5941483832641DC5129BFB08E009CDF3B64969E0AAFAE0EAE8A8897C6735020E158698071C4EAE2B4EA4D6B7EE73CBF826EE19A51C91E925CC1260FFF06B0AF133FFC86348AA1DD07D43753C6B56415D0E5DA8F0F3B2D5658042E1F757AA22634CD19C626B9B8F26197504F5357F31F175A55B15DF3F660DA

Böylece imzalama işlemini gerçekleştirmiş oluyoruz. Şimdi sırada imzalanan dosyanın doğrulanması işlemi var.

Doğrulama (Verify) İşlemleri


Doğrulama işlemleri için birden fazla yol var, imzaladığınız dosyaları aşağıdaki yöntemler ile doğrulayabilirsiniz.

Time Stamp Token’ın Log Dosyası üzerinden Doğrulanması

Bu işlem için komut şu şekilde:

# /usr/local/ssl/bin/openssl ts -verify -data messages -in messages.der -token_in -CAfile /CA/cacert.pem -untrusted /CA/tsacert.pem

Çıktı şu şekilde olacaktır:

Verification: OK

Görüldüğü gibi doğrulama sağlandı. messages dosyasının kendisinde ya da messages.der dosyasında bir oynama yapmadığınız sürece doğrulama düzgün olarak gerçekleşecektir. Ancak dosyalardan birini değiştirirseniz doğrulama onaylanmayacak ve dosyanın değiştirilmiş olduğu anlaşılacaktır.

Aynı doğrulama işinin, token yerine response (tsr – time stamp response) üzerinden de yapılması mümkün.

TS Response’un Log Dosyası üzerinden Doğrulanması

Komut şu şekilde:

# /usr/local/ssl/bin/openssl ts -verify -data messages -in messages.tsr -CAfile /CA/cacert.pem -untrusted /CA/tsacert.pem

Sonuç gene aynı olacaktır:

Verification: OK

Doğrulama işlemlerinden birisi de, time stamp replay’in (tsr request’e karşı doğrulanmasıdır.

Time Stamp Reply’nin Request üzerinden Doğrulanması

Bu işlem için komut şu:

# /usr/local/ssl/bin/openssl ts -verify -queryfile messages.tsq -in messages.tsr -CAfile /CA/cacert.pem -untrusted /CA/tsacert.pem

Çıktı:

Verification: OK

Görüldüğü üzere, verify işlemleri sorunsuz gitti. Artık, request, token ve log dosyasını arşivleyebilir, herhangi bir zamanda değiştirilmediğini ispat edebilirsiniz.

Dosyalardan herhangi biri üzerinde oynama yaparsınız, doğrulama işlemi gerçekleşmeyecektir.
Örneğin log dosyasını editleyerek bir şeyler silin ve ya ekleyin, sonrasında da aşağıdaki gibi , yeniden doğrulamada işlemi yapın.

# /usr/local/ssl/bin/openssl ts -verify -data messages -in messages.der -token_in -CAfile /CA/cacert.pem -untrusted /CA/tsacert.pem

Sonuç fail olacaktır:

Verification: FAILED
20321:error:2D064067:time stamp routines:TS_CHECK_IMPRINTS:message imprint mismatch:ts_resp_verify.c:656:

Ya da response (tsr) dosyasını bozup verify ettiğiniz zaman da sonuc fail olacaktır.

Evet genel olarak OpenSSL ve TSA kullanarak imzalama işleri bu kadar. Detaylı bilgi için kaynak linklerine göz atabilirsiniz:

Kaynaklar:
http://www.opentsa.org/
http://www.openssl.org/docs/apps/ts.html
http://www.bluequartz.us/phpBB2/viewtopic.php?t=91551&sid=7a25df58028c6cb69b89040fa0fe02a8
http://www.metu.edu.tr/5651/sss.php
http://blog.lifeoverip.net/2008/11/10/5651-sayili-kanun-gereksinimleri-icin-loglari-imzalamak/

 

Kategoriler: *nix,ipucu |

Bu yazılar da ilginizi çekebilir:


- Update: openSSL 1.0 TSA Özelliği – 5651’a Uygun Log İmzalamak
- openSSL ve TSA ile Otomatik Log Imzalayıcı (Shell) Script
- GPG (GnuPG) ile Şifreleme İşlemleri
- MySQL Server Time Zone Değişikliği
- lsof (LiSt Open Files) Kullanımı ve Örnek Komutlar

Yorumlar


  1. TicTacTux | (Ağustos 8th, 2012 2:22 pm)

    Merhabalar Çağrı bey;

    Öncelikle ellerinize sağlık döküman çok güzel olmuş. Fakat bir noktada birşeyleri kaçırıyoruz ki 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.

    ilgilenirseniz memnun oluruz…

    /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]

    Cagri Ersen tarafından yanıtlandı.

    Selamlar,

    Aldığınız hataya göre imzalayıcı sertifikanız da hata var. (invalid signer certificate) Bu problemin nedeni işlem adımlarında bir şey atlamış olmanız olabilir.
    Yazıda bahsi anlatıldığı şekilde defalarca imzalama yaptım. Yazıda sorun olmadığından eminim.

    [Cevapla]

  2. Kaan | (Ekim 15th, 2012 2:33 pm)

    openssl req -new -key tsakey.pem -out tsareq.csr
    komutundan sonra parolayı istiyor fakat sonrasında hata vermeden direkt .csr dosyasını oluşturuyor, bahsettiğiniz gibi bilgileri istemiyor. Neden olabilir?

    [Cevapla]

    Cagri Ersen tarafından yanıtlandı.

    Peki imzalama işlemi doğru olarak gerçekleşiyor mu ?

    [Cevapla]

    Kaan tarafından yanıtlandı.

    Sorunu buldum, freebsd üzerinde “openssl req..” komutu verildiğin de 0.9.8n versiyonu ile yani tsa olmadan çalışıyor ve dolayısı ile paroladan sonra hiçbir işlem yapmıyor. Asıl olması gereken ise “/usr/local/bin/openssl req..” şeklinde kullanmak.

    Teşekkürler tüm açıklamaların için..

    [Cevapla]

  3. Kaan | (Ekim 18th, 2012 10:18 pm)

    Tekrar merhaba,

    openssl req -config /usr/local/ssl/openssl.cnf -days 1825 -x509 -newkey rsa:2048 -out cacert.pem -outform PEM

    ile işlemi yaparken çıkan PEM pass ve Country, Location, Email vb. alanları shell script ile otomatik girilmesi işlemini nasıl sağlayabiliriz veya openssl’in bunlar için bir parametresi varmı?

    Teşekkürler..

    [Cevapla]

  4. Ercihan NEŞELİ | (Nisan 23rd, 2013 2:26 pm)

    Merhaba.

    http://www.opentsa.org/ts/ts-20060923-0_9_8c-patch.gz linkinde geçen tsa yı bir türlü indiremiyorum. sitesi kapatılmış. Onca aramama rağmen net ortamında temin edemedim dosyayı. Elinde olan bir arkadaş paylaşabilir mi acaba ? yada alternatif olarak kullanabileceğim benzer bir yazılım biliyor musunuz ?

    [Cevapla]

    Cagri Ersen tarafından yanıtlandı.

    Merhaba,

    OpenSSL’in 1.x sürümünden itibaren ts özelliği default olarak geliyor. Bir başka deyişle, yeni sürüm kullanırsanız patch gecmeniza gerek kalmaz.

    http://www.syslogs.org/openssl-1-0-x-tsa-ozelligi-ve-5651a-uygun-log-imzalamak/

    [Cevapla]

  5. Adem | (Nisan 27th, 2013 11:06 am)

    hocam
    wget http://www.openssl.org/source/openssl-0.9.8c.tar.gz bu adresteki yamayı indiremedim ? alternatif bi adres varmı sa çok ikrama gececek emeğinize sağlık bu arada çok gzel bi paylaşım

    [Cevapla]

    Cagri Ersen tarafından yanıtlandı.

    Bağlantınızla alakalı bir sorun olabilir mi ? Zira ben download edebiliyorum.
    Ayrıca bir hatırlatma: eğer openssl 1.x sürümü kullanıyorsanız patch geçmenize gerek kalmıyor.

    [Cevapla]

  6. Hakkı | (Mayıs 13th, 2013 5:22 pm)

    Dosyaları SSL sertifikasıyla imzalama zorunluluğu var mı yoksa dosyayı timestamp’le birlikte herhangi bir hashleme algoritmasıyla hashlemek yeterli midir?

    [Cevapla]

    Cagri Ersen tarafından yanıtlandı.

    O konu için bir çok yorum var; ancak kendi ürettiğiniz herhangi bir ssl cert ile imzalama yapmanızda sakınca yok. Dosyanın imzalandığı günden sonraki günlerde değiştirilmemiş olduğunu teknik olarak ispat etmeniz yeterli. Kullanılan aracın herhangi bir otorite tarafından sağlanmış olmasına gerek yok yani.

    [Cevapla]

  7. Yusuf Erciyes | (Ağustos 5th, 2013 9:28 am)

    Merhaba burdaki talimata göre 5651 loglama yapıyorum.
    5651 loglama ile ilgili “Sistem her saniye kayıtlar için HASH üretebilmelidir.” gibi ifadeler internette görüyorum. Burda kasdedilen nedir? Yada zorunlu mudur?
    Teşekkürler.

    [Cevapla]

  8. İsmail DELİGÖZ | (Ocak 24th, 2014 1:07 pm)

    Merhaba Arkadaşlar;

    Bende Daha Önceden Endian Firewall Kullanmış Biri Olarak Yeni Çalıştığım Firmaya Bu Sistemi Kurmak istiyorum.

    Fakat Bu işlemi Kurduktan Sonra 5651 Nolu Yasada Kabul Edilen Özelliklere Göre Log imzalama işlemini Gerçekleştirecek Olan Patch’i Endian Firewall Üzerine Kurmam Gerekecek mi Bilmiyorum.

    Tabi Endian Firewall Üzerinde Çalışıp Çalışmadığı Hakkında da Bilgim Yok.

    Şuan Firmamızda PfSense Kurulu Ve Hiç Kullanışlı Değil. Endian’a Geçmek istiyorum Tavsiyeleriniz Nedir ?

    [Cevapla]

  9. serkan | (Haziran 13th, 2014 1:21 pm)

    md5 yapmama rağmen pfsense de aşağıdaki hatayı alıyorum. bu index.txt, serial gibi dosyaları biz ellemi ekleyeceğiz? ne yapmamız gerekiyor?

    teşekkürler.

    ig /usr/local/openssl/openssl.cnf -in tsareq.csr -out tsacert.pem
    Using configuration from /usr/local/openssl/openssl.cnf
    Enter pass phrase for /CA/private/cakey.pem:
    /CA/index.txt: No such file or directory
    unable to open ‘/CA/index.txt’
    34374662056:error:02001002:system library:fopen:No such file or directory:bss_file.c:398:fopen(‘/CA/index.txt’,’r’)

    [Cevapla]

    Cagri Ersen tarafından yanıtlandı.

    İlgili dosyayı bulamıyor; aşağıdaki şekilde dosyayı oluşturup içerisine 01 yazarsanız sorun kalmayacaktır.

    echo 1 > /CA/index.txt
    

    [Cevapla]

  10. serkan | (Haziran 14th, 2014 10:13 am)

    değerli hocam, şimdide aşağıdaki gibi bir hata aldım. acaba nerde yanlış yapıyorum. hatim ettim resmen. :-)

    /usr/local/bin/openssl ca -config /usr/local/openssl/openssl.cnf -in tsareq.csr -out tsacert.pem

    Using configuration from /usr/local/openssl/openssl.cnf
    Enter pass phrase for /CA/private/cakey.pem:
    wrong number of fields on line 1 (looking for field 6, got 1, ” left)

    [Cevapla]

    Cagri Ersen tarafından yanıtlandı.

    index.txt dosyasında boşluk vs. gibi olmaması gereken bir karakter var sanıyorum.
    O dosyayı bir gözden geçirin derim.

    [Cevapla]

    serkan tarafından yanıtlandı.

    yok hocam. hatta tekrardan oluşturdum. 01 var sadece. takıldım kaldım ilerleyemiyorum.

    [Cevapla]

    serkan tarafından yanıtlandı.

    hocam başındada belirttiğim gibi pfsense olduğundan /usr/local/bin/openssl bütün komutlarını bu şekilde çalıştırıyorum ama hata aynı. acaba pfsense olduğundan mı? teşekkürler.

    [Cevapla]

    Cagri Ersen tarafından yanıtlandı.

    pfSense olmasının payı olabilir evet. Öncelikle kullandığınız OpenSSL’in versiyonu 1.x olmalı. Bunu kontrol etmenizi öneririm. Eğer 1.x’den aşağı bir sürüm kullanıyorsanız, sisteme ikinci ve güncel bir OpenSSL kurulumu yapmanız icap edecektir.

    Son olarak da işlem adımlarınızı buradan paylaşırsanız yardımcı olmaya çalışırım.

    [Cevapla]

    serkan tarafından yanıtlandı.

    sanırım yapamayacağım.. versiyon 1.. ama pfsense olduğundan sorun sanırım. çünkü bunun üzerinde kurulu geliyor bu versiyon. hatta iki versiyon mevcut.bütün komutları bu versiyonla yapmamıza rağmen takılı kaldığımız yer malum..
    teşekkürler.

    [2.1.3-RELEASE][root@serlogo.local]/root(2): /usr/local/bin/openssl
    OpenSSL> version
    OpenSSL 1.0.1g 7 Apr 2014

    [Cevapla]

    Cagri Ersen tarafından yanıtlandı.

    Merhabalar,

    ben pfSense üzerinde de OpenSSL ile imzalama işlemini yaptığım için çalıştığı konusunda şüphem yok.
    Sizn işlem adımlarınızda eksik kalan bir adım olabilir. http://www.syslogs.org/openssl-1-0-x-tsa-ozelligi-ve-5651a-uygun-log-imzalamak/ adresinde anlatılan ekstra adıma da göz atmanızı öneririm.

    Son olarak dediğim gibi işlem adımlarınızı paylaşabilirseniz yardımcı olmaya çalışırım.

    [Cevapla]

    serkan tarafından yanıtlandı.

    hocam teşekkürler. özellikle index.txt dosyasını defalarca oluşturmama rağmen (ee ile oluşturuyordum) dışarı çıkardım notepad ile açınca boş bir satır oluştuğunu gördüm. silince düzeldi ve verdiğiniz ikinci linke bakınca sorunların hepsi çözülmüş oldu. teşekkürler. benim gibi takılanlara bu son cümleler yardımcı olacaktır. teşekkürler tekrar..

    [Cevapla]

  11. Fuat Kaya | (Haziran 21st, 2014 2:33 pm)

    İfadeyi yanlış yazmışsınız. Bir sunucudaki web sayfası loglarında (IIS Logları – Apache Web server) zaman damgası olmaz, imzalanmaz. Yer sağlayıcı dışarı çıkan trafikleri erişim sağlayıcı gibi denetleyebilir. Ama web sayfalarında olmaz. Böyle bir kanuni yükümlülük yok. Yazınızda bu durum kesinlikle yanlış anlaşılır.

    [Cevapla]

    Cagri Ersen tarafından yanıtlandı.

    Kanunun muhtelif yorumları var ancak ne demek istediğinizi tam olarak anlayamadım ?

    [Cevapla]

    Fuat Kaya tarafından yanıtlandı.

    Karmaşa TİB’in veya BTK’nın bu yönetmelik hakkında bir düzenleme getirmemesinden kaynaklanıyor. “Yer sağlayıcı trafik bilgileri zaman damgasıyla damgalanarak saklanmalı” tıpkı erişim sağlayıcılar ve internete toplu kullanım sağlayıcılar gibi. Fakat bu logları ne şartlarla tutabilecekleri belirtilmemiş. Toplu kullanım sağlayanlar için Dhcp kayıtlarını tutan IP log imzalayıcı gibi, verimerkezi ve sunucu içinde de kullanılabilecek bir yapı gerekiyor. Yer sağlayıcı statüsündeki verimerkezi ile sunucu kiralayanlar aynı düzlemde. Verimerkezi kendisine gelen trafiği çeşitli seviyelerde loglayabilir. Bu kiralık sunucu barındıranlar için pek mümkün değil. Bu sebeple DC’lar sattıkları hostingler dahil olmak üzere iis, ftp loglarını imzalamıyor.

    [Cevapla]

  12. serkan | (Temmuz 14th, 2014 2:39 pm)

    hocam. bu log imzalama çok güzel çalışıyor. yalnız imzalanacak dosyaları bir klasöre toplayıp o klasördekileri tek dosya halinde sıkıştırabilir miyiz? bütün dosyalar tek bir sıkışmış dosyanın içinde olabilir mi?

    [Cevapla]

    c tarafından yanıtlandı.

    bununla ilgili destek verirmisiniz messages için sertifika talebi oluştururken hata veriyor bir orda kaldı yardım ederseniz memnun olurum.

    [Cevapla]

    Cagri Ersen tarafından yanıtlandı.

    Merhabalar,

    İşlem adımlarınızı benimle paylaşabilirseniz yardımcı olabilirim. Örnek olarak kullandığınız OpenSSL versiyonu ve aldığınız hata nedir ?

    [Cevapla]

    c tarafından yanıtlandı.

    merhaba,

    şimdi dediğiniz gibi dosyayı imzalamak istiyorum ama

    bash :/usr/local/ssl/bin/openssl : no such file or directory

    hatası veriyor

    /imza klasörü açtım ve messages logunu içerisine kopyaladım sonrada
    aşağıdaki satırı çalıştırdım yukardaki hatayı verdi.

    /usr/local/ssl/bin/openssl ts -query -data messages -no_nonce -out messages.tsq

    [Cevapla]

    Cagri Ersen tarafından yanıtlandı.

    Hata açık, openssl’i bulamıyor ilgili path’de. (/usr/local/ssl/bin/openssl : no such file or directory)

    Sisteminizde OpenSSL nerede kurulu ise (which openssl) komutu ona göre düzenlemeniz gerekiyor.

    [Cevapla]

    c tarafından yanıtlandı.

    çağrı bey,

    yazmadan önce inanın kontrol ettim bu dizin var içinde openssl de var.
    which openssl
    bunu kullandım oda bana
    /usr/bin/openssl dizinini verdi komutu ona göre düzenledim fakat yine aynı hatayı verdi bu dizinde openssl yok diyor..

    [Cevapla]

    c tarafından yanıtlandı.

    ben dizini kaldırdım direk openssl ile çalıştırdım komutu çat diye yaptı ama bunu nasıl otomatize edicem scriptinizi indirdim nasıl kurucam bu scripti nasıl uygulayacam bilgi verirseniz çok memnun olurum

    [Cevapla]

  13. fatih | (Eylül 10th, 2014 3:06 pm)

    arkadaşlar bu işlemi pfsense üzerine kuran var mı ?

    [Cevapla]

  14. Gokan | (Ekim 18th, 2014 2:25 pm)

    Merhaba

    Burada amaç dosyayını değiştirlemezm olduğunu ıspatlamak ise “MD5SUM” ile bu logların hash loglarla birlikte bir dizinde saklsak openssl kullanmadan yapabilirmiyiz? Emin olmadım bir sormak istedim.

    Ornegin:
    touch ornek-5651.log
    md5sum ornek-5651.log > ornek-5651.log.imza

    [Cevapla]

    Cagri Ersen tarafından yanıtlandı.

    Selamlar,

    İmzalamada amaç ilgili dosyanın imzalandığı andan beri değiştirilmemiş olduğunu ispatlamak. OpenSSL’in TSA özelliği bunu sağlıyor. Sadece hash aldığınız zaman hash’in alındığı anı ispat edemezsiniz.

    [Cevapla]

    Gokan tarafından yanıtlandı.

    Evet, bende kucuk bir bash betik yazip tarih değişkenine gore güne gün alırım demiştim. Lakin dediğiniz gibi bu sefer data sisteme erişen herhangi biri tarafından kolayca manipüle edilebilir. Yazı çok teşekkürler.

    [Cevapla]

  15. Gokan | (Ekim 19th, 2014 8:40 pm)

    Debian (wheezy) üzerinde imzalama işlemini gerçekleştiriyorum. Zaman damgası için testleri denedigimde soyle bir hata alıyorum.

    Öncelikle imzalanması için istek olusturuyorum.
    openssl ts -query -data messages -no_nonce -out messages.tsq

    Daha sonra responce yaptıgımda gecersiz sertfika hatasi alioyurm.

    openssl ts -reply -queryfile messages.tsq -out messages.tsr -config /etc/ssl/openssl.cnf

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

    Debian default openssl.cnf kullanıyorum. Oradaki kök serfika ve Tsa sertikasıyle ilgili dizine yönlendirmiş durumdayim.

    [Cevapla]

  16. Gokan | (Ekim 19th, 2014 9:23 pm)

    http://www.syslogs.org/openssl-1-0-x-tsa-ozelligi-ve-5651a-uygun-log-imzalamak/ zaten anlatmisiniz. 215 ve 222. satırlarda olanları dediginiz gibi yaptim ancak ayni hatayi almaya devam ediyorum.

    Satırların durumu ;

    # This is required for TSA certificates.
    extendedKeyUsage = critical,timeStamping
    #extendedKeyUsage = timeStamping

    [ v3_req ]

    # Extensions to add to a certificate request

    basicConstraints = CA:FALSE
    keyUsage = nonRepudiation, digitalSignature
    #keyUsage = critical,nonRepudiation

    [Cevapla]

  17. Gokan | (Ekim 20th, 2014 4:28 pm)

    Sertfikayı tekrar oluşturunca düzeldi.

    Teşekkürler.

    [Cevapla]

  18. Bora AKAYDIN | (Kasım 4th, 2014 11:16 am)

    openssl.cnf dosyasında md5 ayarlarını değiştirmek bende işe yaramadı. sorunu şöyle çözdüm: dosyanın bulunamadığı yerde touch ile boş bir index.txt dosyası oluşturdum. bundan sonra aynı komut serial adlı bir dosyayı bulamayıp benzeri hata verdi. onun için de dosyanın bulunamadığı yerde içeriği “01” olan bir serial dosyası oluşturunca sorun düzeldi.

    [Cevapla]

  19. Cem Ibrahim ARI | (Nisan 13th, 2015 10:48 am)

    extendedKeyUsage=critical,timeStamping
    satırı uncomment edilmezse “invalid signer certificate purpose:ts_rsp_sign” hatası vermekte. Hatayı alanların dikkatine.

    Güzel makale, elinize sağlık

    [Cevapla]

  20. Metin | (Ağustos 1st, 2015 1:25 pm)

    Merhaba,

    Halihazırda çalışan ve freebsd (pfsense2.1x) üzerinde koşan bir 0.9.8zb openssl var. TSA patchi buna nasıl uygulayabilirim?

    [Cevapla]

    Cagri Ersen tarafından yanıtlandı.

    Selamlar,

    O sürümde TSA desteği yoksa, aynı versiyon başka bir FreeBSD üzerinde openssl’i derleyip, pfSense üzerine taşıyabilirsiniz.

    [Cevapla]

  21. Mustafa YILMAZ | (Eylül 9th, 2015 12:07 pm)

    Hocam selamlar,

    Yıllar sonra bile ufuk açıcı işe yarar bir makale teşekkürler :)

    [Cevapla]

  22. Deniz B | (Şubat 12th, 2016 5:00 pm)

    Merhaba,

    Öncelikle döküman için teşekkür ederim. Ben işlemleri yaparken openssl 0.9.8 yerine 1.0.2 sürümünü kullandım. İşlemi yaparken aşağıdaki komutun ardından bir hata ile karşılaşıyorum:

    openssl ca -days 1825 -config /usr/local/openssl/openssl.cnf -in tsareq.csr -out tsacert.pem

    Aldığım çıktı şu şekilde:

    Check that the request matches the signature
    Signature ok
    The stateOrProvinceName field needed to be the same in the
    CA certificate (Marmara) and the request (Marmara)

    Biraz araştırma yapıp, Stackoverflow’da bir cevapla karşılaştım ancak o da çözüm olmadı. Bunu nasıl çözebiliriz acaba? Şimdiden teşekkür ederim.

    Stackoverflow’da bulduğum yanıt: http://stackoverflow.com/questions/6976127/signing-a-certificate-with-my-ca

    [Cevapla]

Trackbacks

Yorumda bulunun.