Skicka och hämta filer med automatik etransport kan automatiseras med hjälp av ett kommandobaserat verktyg som stödjer HTTP GET och POST samt SSL. Genom att till exempel använda en klient från en tredjepartsleverantör kan filer hämtas och levereras från exempelvis en Unix- eller Windowsserver. Det finns ett flertal produkter på marknaden. Som ett exempel på en möjlig tredjeparts produkt använder vi curl. curl är en freeware, andra exempel på freeware är wget och pavuk. Det finns förstås även kommersiella lösningar, som exempelvis WebMethods, som även kan användas. Skatteverket tar inget ansvar för curl eller någon annan av dessa produkter. Vid problem får användaren vända sig till leverantören. Användarens certifikat måste bifogas som en parameter i klientanropet. Certifikatet som används vid automatiserad hantering har ett annat format mot det som används vid manuell hantering. Information hur man går tillväga för att skapa ett certifikat för automatiserad överföring beskrivs senare i detta dokument. Filer kan hämtas från och skickas till en bestämd produkt. Varje produkt har en unik identitet som måste anges vid anrop till e-transport. Produktidentiteten kan beställas från Skatteverket epost-adressen Mottagning Underhåll Skicka filer till etransport För att skicka filer till etransport används HTTP PUT eller POST. Formaten för URL är: https://shs.skatteverket.se/et/et_web/auto/produktidentitet/filnamn Produktidentiteten kan till exempel vara 895c026c-f7ca-fcc1-3868-dc030e12c944. Filnamn är inte obligatoriskt i URL:en utan kan anges som parameter i klientanropet. curl --cert my.crt --cacert CA.crt T testfil https://shs.skatteverket.se/et/et_web/auto/895c026c-f7ca-fcc1-3868-dc030e12c944/ För att skicka flera filer till etransport i ett meddelande så måste filerna läggas in ett MIME multipart format innan det skickas till etransport. Med Curl finns det ett enkelt sätt att skicka in flera filer. Curl har funktioner för att skapa data enligt multipart/form-data format. Med hjälp av denna funktionalitet så slipper man skapa ett MIME-paket manuellt. Exempel när curl används (samma produkttyp som ovan): curl --cert my.crt --cacert CA.crt F file1=@testfil1 -F file2=@testfil2 https://shs.skatteverket.se/et/et_web/auto/895c026c-f7ca-fcc1-3868-dc030e12c944?filenames=testfil1,testfil2
Förklaring till exemplet ovan: -F file1=@testfil1 innebär att innehållsdelen i MIME-paketet ska vara en fil, testfil1. Ska man skicka flera filer i samma paket kan man ange flera -F file2=@testfil2?filenames=testfil1,testfil2 innebär att filnamnen kommer med som metadata vid överföringen till Skatteverket Metainformation Det kan ibland finnas önskemål från Skatteverkets sida att metainformation ska skickas med. ( OBS! används endast i överenskommelse med Skatteverket) Ett sådant är att?recipient=2021005448.xxx ska anges på URL:en där XXX kan skilja beroende på Verksamhetssystem på Skatteverket som ni ska sända filer till. Exempel när curl används och metainformation bifogas i adressen: curl --cert my.crt --cacert CA.crt F file1=@testfil1 -F file2=@testfil2 https://shs.skatteverket.se/et/et_web/auto/895c026c-f7ca-fcc1-3868- dc030e12c944?recipient=2021005448.pir&filenames=testfil1,testfil2
Hämta filer från etransport För att hämta filer används HTTP GET. Formaten för URL är: https://shs.skatteverket.se/et/et_web/auto/produktidentitet/transaktionsidentitet Produktidentiteten kan till exempel vara 895c026c-f7ca-fcc1-3868-dc030e12c944. Transaktionsidentiteten är inte obligatorisk. Användarens certifikat måste bifogas som en parameter i klientanropet. Certifikatet som används vid automatiserad hantering har ett annat format mot det som används vid manuell hantering. Information hur man går tillväga för att skapa ett certifikat för automatiserad överföring beskrivs senare i detta dokument. För att kunna hämta en fil eller snarare ett meddelande, som kan innehålla en eller flera filer, måste transaktionsidentiteten ingå i URL:en. Att hämta filer sker i två steg. I det första steget görs en fråga om det finns några filer att hämta för en specifik produkt. Svaret returnerar transaktionsidentiteter på separat rader. Varje transaktionsidentitet motsvarar ett meddelande som kan innehålla en eller flera filer. curl --cert my.crt --cacert CA.crt https://shs.skatteverket.se/et/et_web/auto/895c026c-f7cafcc1-3868-dc030e12c944 Exempel på svar: 71e65f00-e95a-11d5-ae31-0010837c4269 ace60a62-e8cc-11d5-8db1-0010837c4269 6c9ac498-e8c2-11d5-924d-0010837c4269 I nästa steg kan filerna hämtas genom att ange transaktionsidentiteten, från svaret i första frågan, i anropet. curl --cert my.crt --cacert CA.crt https://shs.skatteverket.se/et/et_web/auto/895c026c-f7cafcc1-3868-dc030e12c944/71e65f00-e95a-11d5-ae31-0010837c4269 -o svarsfil Exempel på shell-script i UNIX som använder curl och hämtar samtliga filer: #!/bin/sh produkt=895c026c-f7ca-fcc1-3868-dc030e12c944 IFS=`echo \n\r\ `./curl -s --cert my.crt --cacert CA.crt https//shs.skatteverket.se/et/et_web/auto/$produkt \ while read txid do./curl -s --cert my.crt --cacert CA.crt \ https://shs.skatteverket.se/et/et_web/auto/$produkt/$txid -O done
Win32-miljö Man kan i win32-miljö lösa hanteringen att hämta via automatik på olika sätt. Ex. via batfiler, VB-skript eller via programmering. Vi ger endast exempel på lösning via bat-filer. Exempel på bat-fil i win32-miljö som använder curl och hämtar samtliga filer: getall.bat :: Ett exempel hur man hämtar filer från SKV med hjälp av curl och bat-filer :: :: Bat-filen hämtar alla filer för vald produkt. Filerna kan sparas med orginalfilnamn :: eller med transaktionsid beroende på vilket kommando som används. :: URL till SKV e-transport server set URL=https://shs.skatteverket.se/et/et_web/auto :: Produkt att hämta. Anges som produktens UUID :: Exempel för produkten SKV.Drift.Diverse set PRODUCT=895c026c-f7ca-fcc1-3868-dc030e12c944 :: Certifikat :: kundens certifikat som skall används vid hämtning :: Filen skall innehålla både certifikat och nyckel set CLIENTCERT=Kund.crt :: Steria CA cert set CACERT=<filnamn.på.steria.ca.cert> :: Hämta id på alla filer som finns för hämtning :: Lagra filerna med transaktionsid (unikt id) for /f %%i in ('curl --cert %CLIENTCERT% --cacert %CACERT% "%URL%/%PRODUCT%"') do curl -O -- cert %CLIENTCERT% --cacert %CACERT% "%URL%/%PRODUCT%/%%i%" Hämta filer med original filnamn Det kan ibland finnas behov att behålla originalfilnamnet i samband med hämtning från Skatteverket. Nedan beskrivs hur man gör för att hämta filerna där filnamnet bibehålls. curl --cert my.crt --cacert CA.crt https://shs.skatteverket.se/et/et_web/auto/895c026c-f7cafcc1-3868-dc030e12c944?getfilenames=true Exempel på svar: 71e65f00-e95a-11d5-ae31-0010837c4269/filnamn.txt ace60a62-e8cc-11d5-8db1-0010837c4269/exempel.txt 6c9ac498-e8c2-11d5-924d-0010837c4269/test.txt I nästa steg kan filerna hämtas genom att ange transaktionsidentiteten, från svaret i första frågan, i anropet.
curl --cert my.crt --cacert CA.crt https://shs.skatteverket.se/et/et_web/auto/895c026c-f7cafcc1-3868-dc030e12c944/71e65f00-e95a-11d5-ae31-0010837c4269/filnamn.txt -O Exempel på shell-script i UNIX som använder curl och hämtar samtliga filer med bibehållet filnamn: #!/bin/sh produkt=895c026c-f7ca-fcc1-3868-dc030e12c944 IFS=`echo \n\r\ `./curl -s --cert my.crt --cacert CA.crt \ https//shs.skatteverket.se/et/et_web/auto/$produkt?getfilenames=true \ while read txid do./curl -s --cert my.crt --cacert CA.crt \ https://shs.skatteverket.se/et/et_web/auto/$produkt/$txid -O done Win32-miljö Man kan i win32-miljö lösa hanteringen att hämta via automatik på olika sätt. Exempelvis via bat-fil, VB-skript eller via programmering. Vi ger endast exempel på lösning via bat-fil. Exempel på bat-fil i win32-miljö som använder curl och hämtar samtliga filer med original filnamn: getall.bat :: Ett exempel hur man hämtar filer från SKV med hjälp av curl och bat-filer :: :: Bat-filen hämtar alla filer för vald produkt. Filerna kan sparas med orginalfilnamn :: eller med transaktionsid beroende på vilket kommando som används. :: URL till SKV e-transport server set URL=https://shs.skatteverket.se/et/et_web/auto :: Produkt att hämta. Anges som produktens UUID :: Exempel för produkten SKV.Drift.Diverse set PRODUCT=895c026c-f7ca-fcc1-3868-dc030e12c944 :: Certifikat :: kundens certifikat som skall används vid hämtning :: Filen skall innehålla både certifikat och nyckel set CLIENTCERT=Kund.crt :: Steria CA cert set CACERT=<filnamn.på.steria.ca.cert> :: Hämta id på alla filer som finns för hämtning :: Lagra filerna med orginal filnamn for /f %%i in ('curl --cert %CLIENTCERT% --cacert %CACERT% "%URL%/%PRODUCT%?getfilenames=true"') do curl -O --cert %CLIENTCERT% --cacert %CACERT% "%URL%/%PRODUCT%/%%i%"
Certifikathantering Certifikaten levereras från externa Certfikatutfärdare (CA) i ett format för att installeras i en webläsare tex..p12,.pfx. För att få dem att fungera med curl eller annan programvara för automatik måste certifikaten göras om till ett annat format s.k. PEM-format. För att göra denna omvandling behövs en tredjeparts produkt t.ex. openssl. Denna kan hämtas hem antingen från www.openssl.org eller andra webplatser ex. http://curl.haxx.se som färdiga exekverbara paket för olika operativsystem eller som källkod vilken då måste kompileras i kundens miljö. För att bryta isär en.p12-fil till ett certifikat och en privat nyckel ska följande kommando köras: openssl pkcs12 in <filnamn>.p12 clcerts nodes out <filnamn>.crt Openssl frågar efter ett lösenord. Man ska då ange det lösenord som man fått från sin CA. Openssl sparar då certifikatet och den privata nyckeln (okrypterad) i filen <filnamn>.crt. Det är denna fil, <filnamn>.crt, som ska anges till parametern --cert i curl-anropet. OBSERVERA, det är viktigt att nyckeln i detta fall skyddas på annat sätt, t.ex. genom att sätta snäva rättigheter på filen där nyckeln ligger lagrad. Exempel på en fil som innehåller både certifikat och privat nyckel: -----BEGIN CERTIFICATE----- MIICeDCCAeGgAwIBAgIBEzANBgkqhkiG9w0BAQQFADBFMQswCQYDVQQGEwJTRTEY MBYGA1UEChMPMjAyMTAwLTA5ODUgUlNWMRwwGgYDVQQDExNSU1YgU0hTIFBST1Yg Q0FFSUQxMB4XDTAzMDQwNzEwNTMxMloXDTA1MTIzMTIzNTk1OVowVjELMAkGA1UE BhMCU0UxDDAKBgNVBAoTA1JTVjERMA8GA1UECxMISU5VVC1TSFMxDzANBgNVBAMT BlJTViBJVDEVMBMGA1UEBRMMMTYxMTExMTExMTExMIGfMA0GCSqGSIb3DQEBAQUA A4GNADCBiQKBgQCtR+Ew3FDVeGCTxjZnLaAVuiTebwQ88bDopCxA5+s6gRHd4kyB 3nJjK8aD9w1z+j8z5PYR7ex2ygObI/vR4+xkY7tnfRoj/4KlSTjvUIzxL5K39pI4 clkatvv4w6tzujt4paxuoibjgg2dmxxf/f8zdmvbthduwyktto+rswh22qidaqab o2cwztaobgnvhq8baf8ebamcbeawewydvr0gbawwcjaibgyqhxaiaqewhqydvr0o BBYEFOsopyCuM/uMUEzOE4+RuCu3X68uMB8GA1UdIwQYMBaAFPVrbKonV93lySCa ddextvx5kvu5ma0gcsqgsib3dqebbauaa4gbajd5d7pj2c15u5humah2tn2wb9zg cng83t1jjlep8c7wmlmeiqucey7pcgdnaikjfneemcau8/kburov7vkuztcofv1h Wjo2cXee1VTWw0+MyxefzpqIK731UOUDjKxwGPC8AeGpUZ2CZvftG2JoRr83ErMA yup9zeqbzgzk6zxc -----END CERTIFICATE----- -----BEGIN RSA PRIVATE KEY----- MIICXQIBAAKBgQCtR+Ew3FDVeGCTxjZnLaAVuiTebwQ88bDopCxA5+s6gRHd4kyB 3nJjK8aD9w1z+j8z5PYR7ex2ygObI/vR4+xkY7tnfRoj/4KlSTjvUIzxL5K39pI4 clkatvv4w6tzujt4paxuoibjgg2dmxxf/f8zdmvbthduwyktto+rswh22qidaqab AoGATWCIpXnsOrbrYXGkf4R3NNyPdChc2x4OIoSVIlKtzs0t/kf8ZA3CRJiap/kd L8nyiSjX3P/ClPT2kUOLQpmlyB3P2lbicUp9u50PZ239EzDsRhDvOVtwXJf+MPcY SnIkYvlywzkEiHQFMCX7OaBnR3HFAxBmeDMPn4KyTuNQGXUCQQDiNj2m5ZxXSgha j6vuzeqw6ymdbznpauisxukdzml+elmooeflumg+ipj35jaa4bfmtghfrdyjnxc0 9lDJrG7vAkEAxBlLeUfjDZswew+SSntVoEJPW0tYAt5Uol0OIVja9pnt6sUJ0X7j 347SFeSOYZQcmnsg9Q1Pa840mKc2HC12twJBAKEl4M+nXLO2UrMpDGOHn7w/FfmU 70WAWoQCGeNImFSvFmOLeGrTnILd970/Q6a8RyNIIJKwO1aYe/DH1A+HXlMCQQCD p/fkft97gxwpiwrovr/gol7orgckhfqmh61u9jmmhyx+coue+4xck8egsbjmeoqj TMdzvtvzpR3q31iU0nFBAkAG8F0fzcVEAtF5BA41sc3D3oJMo6S87GL5/1mtuj0j zc92slup8ol+tbdwrnujiswblwe4s4cbygtx0wulxbo+ -----END RSA PRIVATE KEY-----
Exempel på verktyg och deras hemsida Verktyg curl wget pavuk webmethods Hemsida curl.haxx.se www.gnu.org www.pavuk.org www.webmethods.com