6.3 turvaühenduse seadistamine


6.3.1 Sissejuhatus

Selles peatükis on toodud juhend, kuidas samm-sammult seadistada andmeteenuste alamsüsteemid, et ühendus toimiks https protokolli järgi. Teenuse osutajaks on IIS WCF Service rakendus ja teenusetarbijaks on käsurea programm.


Turvaserveri ja adapterite vahel tuleb luua ühendus kasutades „Transport Security with Certificate Authentication“ (https://docs.microsoft.com/et-ee/dotnet/framework/wcf/feature-details/transport-security-with-certificate-authentication) mustrit. Selle eesmärgi  saavutamiseks on vaja teha järgmised sammud:

  1. Loo sertifikaadid
  2. Teenusepakkuja rakenduse seadistamine

  3. Teenusepakkuja turvaserveri seadistamine

  4. Teenusetarbija turvaserveri seadistamine

  5. Teenusetarbija rakenduse seadistamine

Käesoleva näidise kontekstis on kasutusel üks turvaserver (kus asuvad nii teenusetarbija kui ka teenuseosutaja rollid) ja adapteri rakendused, mis jooksevad sama füüsilise masina peal. Tootmiskeskkonnas asuvad rollid tavaliselt erinevates serverites, kuid kõik alltoodud seadistamise sammud jäävad samaks.

NB! Iga ploki järel tuleb teostada kontroll. Edasi saab liikuda alles siis, kui kontroll on edukalt läbitud.

Eeldused:

  • Valmis tehtud prototüüp ( andmeteenuse osutaja ja kasutaja rakendused), mille vahel toimib andmevahetus http protokolli kaudu.

  • Utiliidid millega saab teha test sertifikaate - makecert.exe ja pvk2pfx.exe.


Figure 1 Sertifikaatide hieraarhia

6.3.2 Ettevalmistused


Kõigepealt tuleb luua sertifikaadid. Andmeteenuse osutajale ja kasutajale tuleb teha eraldi sertifikaadid, mis on allkirjastatud sama juursertifikaadiga. Kokku tuleb kolm sertifikaadi:

  • AdapterCA.cer
  • ConsumerCA.cer - Andmeteenuse kasutaja alamsüsteemi sertifikaat

  • ProducerCA.cer - Andmeteenuse osutaja alamsüsteemi sertifikaat

  1. Loome juursertifikaadi käsurealt:

makecert -r -pe -ss Root -sr LocalMachine -n "CN=AdapterRoot"  -sv  "AdapterRoot.pvk" AdapterRoot.der

 Parameetrid:

  • -r  Sertifikaat, mis on allkirjastatud iseendaga(Self-Signed)

  • -pe Märgib privaatvõtme eksporditavaks

  • -ss Sertifikaathoidla nimi.

  • -sr Registri asukoht (Registry location)

  • -n Sertifikaadi nimi

  • -sv Privaatvõtme faili nimi

  • Viimasena tuleb sertifikaatfaili nimi.

Täpsemat selgitust utiliidi makecert kohta saab vaadata https://msdn.microsoft.com/en-us/library/windows/desktop/aa386968(v=vs.85).aspx.  

Selle käsu tulemusena on kaks faili (AdapterRoot.pvk, AdapterRoot.der) ja lisaks paigaldatud sertifikaat hoidlas Local Computer/Trusted Root Certification Authorities.

Märkus! Parooli lahter võib jääda tühjaks, selleks tuleb vajutada „None“ nuppu „Create Private Key Password“ aknas.

 2. Loome teenuseosutaja sertifikaadi mis on allkirjastatud juursertifikaadiga:

Sertifikaat läheb IIS serverile veebi rakenduse HTTPS bindingu jaoks. Seega on tähtis nimeks panna aadress, mille all publitseeritakse teenus. Selle näidise skoobis kasutatakse masina IP aadressi, aga on võimalik kasutada domeeninimesid.

makecert -n “CN=192.168.0.13" -iv "AdapterCA.pvk” -ic "AdapterCA.cer” -pe -ss my -sr localmachine -sv "ProducerCA.pvk” ProducerCA.der

Parameetrid:

  • iv - juursertifikaadi privaatvõti

  • ic - juursertifikaat

Selle käsu tulemusena tekib kaks faili (ProducerCA.pvk, ProducerCA.der), mis tuleb arhiivi lisada järgmise käsuga:

3. Pakime failid arhiivi:

pvk2pfx -pvk ProducerCA.pvk -spc ProducerCA.cer -pfx ProducerCA.pfx

 Tekkib ProducerCA.pfx fail.

4. Loome teenusekasutaja sertifikaadi mis on allkirjastatud juursertifikaadiga:

makecert -n “CN=192.168.0.13" -iv "AdapterCA.pvk” -ic "AdapterCA.cer” -pe -ss my -sr localmachine -sv " ConsumerCA.pvk” ConsumerCA.der

Tulemuseks on ConsumerCA.pvk ja ConsumerCA.der.

5. Pakime failid arhiivi:

pvk2pfx -pvk ConsumerCA.pvk -spc ConsumerCA.der -pfx ConsumerCA.pfx

 Tekib ConsumerCA.pfx fail.

Selle etapiga on sertifikaadi failid valmis ja on võimalik seadista serverid. Enne seadistamist tuleb veenduda et IISi rakendus töötab HTTP protokolliga.

Kontroll! Sertifikaatide allkirjastamise puu on sama nagu joonise peal.


6.3.3 Teenusepakkuja turvaserveri seaditamine

Kõigepealt tuleb muuta teenuse rakenduse endpointi bindingu parameetrid:

1. Vali rakenduse konfiguratsiooni faili (app.config või Web.config) ja kutsu konteksti menüü


2. Vali „Edit WCF Configuration

3. Bindingute all tuleb valida see mida kasutab teenuse endpoint.

4. Vali tab „Security

5. Muuda kaks parameetrit

a) Mode: Transport

b) TransportClientCredentialType: Certificate

6. File -> Save

7. Vali rakenduse fail ja vajuta „Publish“ konteksti menüüst.

Selle sammuga IISi serveri peal on uuendatud rakendus.

Järgmisena seadistatakse rakenduse serveri parameetrit. IIS serveri sertifikaathoidlasse tuleb importida teenuseosutaja sertifikaadi ProducerCA.pfx:


  1. Vali server

  2. IIS/Server Cerificates

  3. Actions -> Open Feature

  4. Actions -> Import...

  5. Certificate File -> „...“ -> vali ProducerCA.pfx fail.

  6. Password -> Sisesta parool (selles juhendis oli loodud paroolita)

  7. Select Certificate Store -> Web Hosting

  8. OK

Tulemusena tekkis varem loodud sertifikaat. Veendu, et sertifikaat on väljastatud (Issued To) 192.168.218.233 aadressile ja allkirjastatud (Issued by) juursertifikaatiga.

Kontroll! Vali imporditud sertifikaat ja veendu, et tabis Certification Path veerus Certificate status on kirjas „This certificate is OK“. Kui sertifikaat on välispoolt toodud, siis tuleb paigaldada juursertifikaat usaldatud sertifikaadihoidlasse.


Lisa https binding veebirakendusele:

  1. Vali rakendus

  2. Actions -> Bindings...

  3. Add...

  4. Type: https

  5. IP address: tuleb valida sama aadress millele on sertifikaat väljastatud

  6. Port: 443 või teine sobiv port

  7. SSL certificate:

  8. OK

  9. Close


Seadista sertifikaadi nõudmine:

  1. Vali rakendus

  2. IIS/SSL Settings -> Open Feature

  3. Märka Require SSL

  4. Client certificates: Require

Kontroll! Kui muudatused on tehtud – muutub veebileht kättesaamatuks (HTTP Error 403). Testimiseks tuleb veebilehitseja sertifikaathoidlasse importida ConsumerCA.pfx faili (või masina Current User/Personal sertifikaathoidlasse), teha veebilehitsejale restart ja ava rakenduse lehekülg uuesti. Seekord peaks tekkima autentimissertifikaadi aken kust  saab valida ConsymerCA. Tulemusena saab veebilehele ligi kasutades sertifikaati.

6.3.4 Teenusepakkuja turvaserveri seadistamine

Teenusepakkuja rakendus <-> Turvaserver seoses turvaserver on klient ja IIS veebi rakendus on server. Klient ja server peavad usaldama teineteise sertifikaate ja selleks tuleb vahetada nende sertifikaadid.

Teenuseosutaja rakenduse sertifikaadi import turvaserverile:

  1. Security Server Clients

  2. Vali teenuseosutaja roll

  3. Tab Internal Services

  4. Internal TLS Certificates

  5. Vajuta nuppu Browse ja ProducerCA.der faili

  6. OK

  7.  EXPORT - Salvesta Turvaserveri sertifikaat teenuserakenduse masinale.


 Turvaserveri klient sertifikaadi rakendusserveri Local Computer/Trusted Root Certification Authorities hoidlasse ja rakendus serveri sertifikaat tuleb importida turvaserverile.

  1. Logi sisse turvaserveri kasutajaliidesesse

  2. Security Server Clients -> Vali teenuseosutaja

  3. Internal Ceritivate -> Export

  4. Paki lahti arhiivi ja impordi cert.cer rakendusmasina usaldatud juursertifikaatide hoidlasse.


6.3.5 Teenusetarbija turvaserveri seadistamine

Turvaserveri seadistamine toimub samamoodi nagu eelnevalt, selle erinevusega, et Connection Type tuleb panna HTTPS

6.3.6 Teenusetarbija rakenduse seadistamine

Klient rakenduse seadistamisel 6 esimest sammu on samad nagu serveri rakenduse seadistamisel. Lisaks tuleb määrata klient sertifikaadi:

1. Endpoint Behaviors

2. Vajuta New Endpoint Behavior Configuration

3. Name: SSLBehavior

4. Add...

5. Vali clientCredentials

6. Add

7. Lisatud elemendil tuleb valida alamelement clientCertificate

8. Siin tuleb seadistada, mis hoidlast ja mille järgi otsitakse klient sertifikaat, selles juhendis on järgmised parameetrid:

  1. FindValue: ConsumerCA
  2. StoreLocation: Current User
  3. StoreName: My
  4. X509FindType: FindBySubjectName



Klient rakenduse lõplik konfiguratsioon on järgmine:

<?xml version="1.0" encoding="utf-8" ?>

<configuration>

    <startup>

        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />

    </startup>

    <system.serviceModel>

        <behaviors>

            <endpointBehaviors>

                <behavior name="SSLBehavior">

                    <clientCredentials>

                        <clientCertificate findValue="ConsumerCA" x509FindType="FindBySubjectName" />

                    </clientCredentials>

                </behavior>

            </endpointBehaviors>

        </behaviors>

        <bindings>

            <basicHttpBinding>

                <binding name="TreasuryXrdCustomerWS">

                    <security mode="Transport">

                        <transport clientCredentialType="Certificate" />

                    </security>

                </binding>

            </basicHttpBinding>

        </bindings>

        <client>

            <endpoint address="https://192.168.219.123" behaviorConfiguration="SSLBehavior"

                binding="basicHttpBinding" bindingConfiguration="TreasuryXrdCustomerWS"

                contract="TreasutyMessagingService.TreasuryClientPortType"

                name="TreasuryXrdCustomerWS" />

        </client>

    </system.serviceModel>

</configuration>


Last modified: Tuesday, 25 September 2018, 10:06 AM