piątek, listopada 26, 2010

SQL Server Integration Services nie umie HTTPS-a

Używanie WebService-ów po protokole HTTPS z autoryzacją certyfikatem klienta to upowszechniona praktyka. Niestety produkt Microsoftu nie trzyma się ogólnie przyjętych standardów. Jest na to obejście. Należy na maszynie z SQL Serverem postawić lokalnie Apache-a 2.2. Certyfikaty klienta i serwera (ten ostatni można wygodnie wyjąć Firefoksem) należy przekonwertować do formatu PEM narzędziem XCA (napisane w Javie, dostępne na SourceForge-u). Następnie modyfikujemy httpd.conf:
SSLProxyEngine On
SSLProxyCheckPeerCN off
ProxyPass /ws https://host/ws
ProxyPassReverse /ws https://host/ws
SSLProxyCACertificatePath D:/cert/
SSLProxyMachineCertificateFile D:/cert/cert_client_with_key.pem
SSLCertificateChainFile D:/cert/cert_server.pem
Trzeba pamiętać o odhaszowaniu modułów ssl i proxy. Do certyfikatu klienta należy dokleić klucz prywatny. W SSIS jako url podajemy http://localhost/ws.

Produkty MS są do bani, a opensource-owy Apache kolejny raz udowadnia, że jest wszechstronnym i niezawodnym narzędziem.

0 komentarze: