Pracuje teraz nad rozbudowaną wersją aplikacji, którą opracowałem w tamtym roku. Aplikacji wykorzystuje połączenie m.in z serwerem CAS
Aby sprawdzić czy aplikacja jest dobrze skonfigurowana do działania z CASem postawiłem lokalnie serwer CASa, wykorzystałem do tego RubyCAS-Server. Do logowania w aplikacji wykorzystuję Devisa, a do logowania z zewnętrznych serwisów wykorzystuje Omniauth (dla CASa - gem ‘omniauth-cas’).
Klikam w link, który przekierowuje mnie na stronę CASa
W tym momencie aplikacja uruchomiona jest na http a serwer CASa na https i może z powodu braku certyfikatu po stronie aplikacji występuje taki błąd. Czy jest możliwość logowania przez CASa dla aplikacji uruchomionej na http ?
Przy konfiguracji RubyCAS-Server musiałem stworzyć dla niego certyfikat bo inaczej serwer CASa nie chciał się uruchomić, teraz CAS się aplikacja serwera CASa się uruchamia i pokazuje że ma dobry certyfikat, więc certyfikat serwera CASa raczej nie jest problemem.
Nie mam pojęcia jak to będzie w przypadku CAS ale podejrzewam jedno z:
a) ruby jest skompilowany bez / z błędną obsługą SSL. Często się to zdarza jak brakuje libopenssl-dev (albo podobnie) w systemie i instalujesz ze źródeł (np, rvm)
b) certyfikat który wygenerowałeś jest certyfikatem używanym przez serwer HTTPS. Jeśli sam go sobie wygenerowałeś, instytucja certyfikująca jest nieznana systemowi klienckiemu i odrzuca taki certyfikat jako podejrzany. Musisz albo zainstalować certyfikat SSL wygenerowany przez któregoś ze znanych dostawców (Thawte albo coś innego), albo zainstalować wygenerowany certyfikat na serwerze-kliencie CAS. https://help.ubuntu.com/community/OpenSSL#Using_PKCS.2312_Certificates_in_Client_Applications
Nie wiem czy powodem tego problemu może być fakt że aplikacji uruchomiona jest na http a nie https. Ruby ma obsługę SSLa.
Certyfikat, sam wygenrowałem, gdyż jest on potrzebny w trybie development na produkcji mam już certyfikat, który ma łączyć się z właściwym serwerem CAS, nie mam możliwoście wejścia, z poza domeny produkcjnej, na CASa produkcyjnego.
Devise.setup do |config|
config.omniauth :cas, host: '0.0.0.0:4000', ssl: true, ca_path: '...'
end
w ca_path mam podaną ścieżkę do katalogu z certyfikatem pem tym pobranym ze strony projektu rubycas-server. Niestety nadal wyskakuje taki błąd.
EDIT:
Znalazłem pośrednie rozwiązanie:
Devise.setup do |config|
config.omniauth :cas, host: '0.0.0.0:4000', disable_ssl_verification: true
end
Teraz normalnie mnie loguje przez CASa