Eyl
18
2014

Web Service SOAP Message İmzalama (Akis Akıllı Kart)

Merhaba,

E-Defter standartları kapmasında web service aracılığı ile GIB adresine gönderilen soap mesajların imzalanması gerekmektedir. Bu konuda yaptığımız çalışmalar sonucunda Akis akıllı kart ile soap message imzalama java script’ini hazırlamış bulunmaktayız. Soap message’ı imzalamak veya e-defter web servisi ile ilgili tüm sorularınızı bize iletebilirsiniz..

Kaan Sertaç Bozatlı

Blog yöneticisi ve aynı zamanda yazardır. 10 yılı aşkın bir süredir
profesyonel kariyerine Oracle ERP Developer olarak devam etmektedir.
Mail: kbozatli@gmail.com
LinkedIn: Profili Görüntüleyin
Kaan Sertaç Bozatlı

Latest posts by Kaan Sertaç Bozatlı (see all)



6 Yorumlar+ Yorum Ekle

  • Merhaba abi,
    bende ayni is ile ugrasiyorum ve tesadüf bu gönderini gördüm. Bu problemlerim var su an:

    – Java ESYA kütüphaneleriyle imzalamayi denedim ama Webservice icin gereken tüm noktalari kapsamiyor: ESYA ile “soap:Body” ve “wsu:Timestamp” “xml-exc-c14n” ile standard halime getirip “sha1” encode ediyorum ama class’lar hesapladigi degeri disari vermiyor ve bu yüzden gereken “DigestValue” yu koyamiyorum

    – Yine devaminda ESYA ile DigestValue lar üzerinde RSA-SHA256 hesapliyabiliyorum ve bunu disari veriyor ama “BinarySecurityToken” i hesapliyamiyorum.

    Abi, bana sadece bir yön gösterebilsem cok iyi olur
    – ESYA kütüphaneler ile isi yapamiyacagim görünüyor
    – Standard Java Security Lib ler ile Webservice SOAP mesajini cok kolay imzalarim ama PRIVATE_KEY gerekiyor ki bunada ESYA libler üzerinde yine ulasamiyorum

    Su an nasil imzalayabilecegimi bilmiyorum malesef.

    Tesekkürler.

    Selam,
    Metin Akbas

  • Merhaba,

    Usb kart okuyucu yani akis kart ile değilde aynı işlemi HSM cihazı üzerinde var olan sertifika ile yapmayı denediniz mi? .net tarafında soap signing yaparken PrivateKeye ihtiyaç duyuyor ve Esya apilerden hsm deki sertifikayı çektiğimizde PrivateKey property si null geliyor. Bu konuda bi çalışmanız veya bilginiz varmı?

    İyi çalışmalar

    • erdem bey merhaba,

      burda akis kart için konuşacak olursak, karta erişmeniz gerekiyor aşağıda örnek bir kod gönderiyorum.

      String pwd = 741258;
      char [] pwdchar = pwd.toCharArray(); SunPKCS11 akisProvider = new SunPKCS11("pkcs.properties");
      //pkcs.properties dosyasının içi !!
      /*

      name = AKIS
      library = C:\Windows\System32\akisp11.dll

      disabledMechanisms={ CKM_SHA1_RSA_PKCS }

      */
      Security.addProvider(akisProvider);

      KeyStore ks = KeyStore.getInstance("PKCS11",akisProvider);

      ks.load(null, pwdchar);

      /*load edilen akis kart içerisinden public key , sertifika, sertifika aliası okunur !*/
      Enumeration aliases = ks.aliases();
      String idAlias = (String)aliases.nextElement();
      PublicKey publickey = null;
      String alias = null;

      while (aliases.hasMoreElements()) {
      alias = (String) aliases.nextElement();

      System.out.println("alias => " + alias);

      signCert = (X509Certificate) ks.getCertificate(alias);

      publickey = signCert.getPublicKey();

      signPrivKey = ks.getKey(alias, null);//private key akiste dışarı çıkartılamaz ancak bu şekilde encoded vaziyette okunur.

      if(signCert.getKeyUsage()[0])//signature certificate
      break;
      }

  • Merhaba;
    Ben de e-Defter test web servisine .NET (C#) kullanarak bağlanmaya çalışıyorum. Hem USB smart card kullanarak hem de HSM ile imzalama yapmam gerekiyor.
    ESYA dll leriyle yapılan imzalamada örnek SOAP mesajını oluşturamadım.
    Bu yüzden .NET (C#) tarafında WCF client ile CustomBinding kullanarak verilen örnek soap mesajını oluşturabildim. Bunu oluştururken efatura portalinden test amaçlı mali mühürü deneme sertifasını kullandım. Bunun içinde private key var. (faturadeneme@mmshs.gov.tr.pfx)

    Burada HSM ya da USB smart card içindeki sertifikayı ESYA dll’leri vasıtasıyla almak istediğimde private key gelmiyor. Private key’i alma konusunda yardımlarınızı rica ediyorum.

    2. sorum : faturadeneme@mmshs.gov.tr.pfx deneme mali mühürü kullanarak yaptığım requestlerde hep Paket adı hatası alıyorum. Bu sertifikayı kullandığım requestlerde paketlerde vergi numarası alanı için ne yazmam gerektiğini bilen var mı acaba?

    Teşekkürler.
    Engin.

    • Engin bey merhaba,
      forumu hortlatmış gibi oldum ama siz c# ile soap imzalayabildiniz mi?

  • arkadaşlar merhaba, ben de forumu hortlatmış oldum. java’da soap imzalama ihtiyacımız var fakat çözüm bulamadık. fikri olan yardımcı olabilir mi?

Yorum yapın

*