Pages

Tuesday 25 September 2012

Σύνδεση με Oracle Apex σε HTTPS (SSL) web service με self-signed πιστοποιητικά

Ακολουθούν τα βήματα που χρειάστηκε να ακολουθήσω σε Oracle 10g ( 10.2.0.3.0) database , σε windows 2003 server, με APEX 4.0.1.00.03 και Oracle HTTP Server (Apache 2.0) (10.1.3.3.0):

Προφανώς πρέπει να επιβεβαιώσουμε, πρώτα, ότι ο server που έχει τη βάση και το APEX επικοινωνεί με το internet και το https url του web service χωρίς πρόβλημα.


Δημιουργία wallet και self-signed πιστοποιητικών για τον server srv01, χρησιμοποιώντας το oracle wallet από το home του Oracle HTTP Server (λογικά δε θα έχει διαφορά αν χρησιμοποιηθεί το αντίστοιχο home της βάσης) ως εξής: 

D:\oracle\oias1013\BIN\orapki wallet create -wallet D:\oracle\wallet -auto_login

D:\oracle\WALLET> D:\oracle\oias1013\BIN\orapki wallet add -wallet D:\oracle\wallet -dn "CN=srv01, OU=a1, O=a11, L=a111, ST=a1111, C=GR" -keysize 1024 -self_signed -validity 3650

orapki wallet display -wallet D:\oracle\wallet

Προσοχή: a) κρατήστε το password που θα σας ζητηθεί γιατί θα χρειαστεί αργότερα, έστω: password123.
b) το CN στην πρώτη εντολή να είναι το fully qualified name του server που έχετε το Wallet και τη βάση του APEX.

Για να επικοινωνήσει σωστά το APEX με το web service που θέλετε θα πρέπει , το wallet, να περιέχει όλη την αλυσίδα πιστοποιητικών της σελίδας που θα καλέσετε. Για ένα ενδεικτικό web service (σε επόμενο post θα περιγράψω συγκεκριμένο παράδειγμα για το web service της ΓΓΠΣ, για μη φυσικά πρόσωπα) https://mywebservice.gr/test.wsdl θα αποθηκεύσετε τοπικά στο δίσκο τα πιστοποιητικά ως εξής :
  1. θα πρέπει να πάτε με τον browser στη σελίδα https://mywebservice.gr/test.wsdl 
  2. Εικονίδιο «Αναφορά ασφάλειας» -> Προβολή Πιστοποιητικών
  3. Διαδρομή πιστοποίησης
  4. Επιλογή: 
    •  VeriSign  -> Προβολή Πιστοποιητικού -> Λεπτομέρειες -> Αντιγραφή σε αρχείο: 1_ver.cer . Χρησιμοποιήστε την επιλογή  [Base-64 encoded X.509 (.CER)] .
    •        ... : 2_ver_class3.cer 
    •        : 3_test.cer
 Όλα τα πιστοποιητικά αυτά θα πρέπει να εισαχθούν στο στο wallet π.χ. χρησιμοποιώντας το gui

Start Menu\Programs\Oracle - oias1013\Integrated Management Tools\Wallet Manager :
    1. Ανοίγετε το wallet που δημιουργήσατε παραπάνω στο D:\oracle\wallet
    2. Right click : Trusted Certificates -> Import Trusted Certificate -> Select the file you saved earlier
    3. Επαναλαμβάνετε για κάθε ένα από τα πιστοποιητικά της αλυσίδας
    4. Αποθήκευση
      Ένας πρώτος έλεγχος (as system , sys) για το αν λειτουργεί το wallet είναι:
      select utl_http.request('https://support.oracle.com', NULL,'file:d:\oracle\wallet','password123') from dual;

      Ρύθμιση του wallet in apex:
      • Login internal (default user: admin)
      • Manage service -> Instance settings
      • Wallet path: file:d:\oracle\wallet
      • Apply
      • Επανεκκίνηση βάσης (όχι απαραίτητο)
      Τεστ web service in apex: Δημιουργία web service reference ως εξής:
      • Δημιουργήστε ένα νέο workspace (ή κάντε login σε αυτό που ήδη χρησιμοποιείτε)
      • Δημιουργήστε νέο application
      • Επιλέξτε το application και πατήστε Shared Components
      • Επιλέξτε Web Service References 
      • Πατήστε Create
      • -> Next 
      • search a UDDI registry to find the WSDL? : ΝΟ   -> Next 
      • WSDL Location: http://www.oracle-base.com/webservices/server.php?wsdl (αν είναι https βάζετε το αντίστοιχο url) -> Create reference (για το συγκεκριμένο δε χρειάζεται να φτιάξετε ξεχωριστή φόρμα/report)
      • Επιλέγετε ξανά Web Service References . Προσοχή , επιλέξτε report view για να δείτε τη λίστα με τα service references.
      • Στο Reference που μόλις δημιουργήστε , πατήστε το εικονίδιο στη στήλη "Test" 
      • Select operation "ws_add" -> Δώστε τους αριθμούς -> Πατήστε "Τεστ " και δείτε την απάντηση του web service

      Αναφορές:
      http://blog.whitehorses.nl/2010/05/27/access-to-https-via-utl_http-using-the-orapki-wallet-command/
      http://serafeimk.blogspot.gr/2009/05/call-web-services-plsql.html 

      No comments:

      Post a Comment