2013-10-07 12 views
5

UWAGA: Jeśli chcesz zobaczyć zachowanie tej aplikacji demonstracyjnej, po prostu wejdź na stronę www.laboratoryjne.pl. Tutaj wybierz testssl.PersonController i możesz utworzyć osobę. Następnie idź i edytuj osobę, w której wyznaczony jest kanał SSL, co da pętlę przekierowania.pomost 9: konfiguracja najbardziej podstawowego protokołu SSL/https

Wygląda na to, że z Jetty 9 kolejnych elementów konfiguracji trafiło do pliku start.ini, mam wersję 9.05.

W celu przetestowania najbardziej podstawowe SSL/HTTPS, jestem odkomentowanie następujące wiersze w start.ini:

#=========================================================== 
# SSL Context 
# Create the keystore and trust store for use by 
# HTTPS and SPDY 
#----------------------------------------------------------- 
jetty.keystore=etc/keystore 
jetty.keystore.password=OBF:1vny1zlo1x8e1vnw1vn61x8g1zlu1vn4 
jetty.keymanager.password=OBF:1u2u1wml1z7s1z7a1wnl1u2g 
jetty.truststore=etc/keystore 
jetty.truststore.password=OBF:1vny1zlo1x8e1vnw1vn61x8g1zlu1vn4 
jetty.secure.port=8443 
etc/jetty-ssl.xml 

#=========================================================== 
# HTTPS Connector 
# Must be used with jetty-ssl.xml 
#----------------------------------------------------------- 
jetty.https.port=8443 
etc/jetty-https.xml 

żadnych innych zmian konfiguracyjnych Jetty. Następnie zbudowałem najbardziej podstawową aplikację Grails (ma klasę Person), w której ustawiam pewne akcje kontrolera, aby zabezpieczyć, co działa dobrze na mojej maszynie programistycznej, używając starszej wersji Jetty (którą zawiera Grails). Odbywa się to po prostu w tym wiosna-security-rdzeń, a następnie dodając następujące wiersze do pliku konfiguracyjnego:

grails.plugins.springsecurity.secureChannel.definition = [ 
    '/person/list': 'REQUIRES_INSECURE_CHANNEL', 
    '/person/delete/**': 'REQUIRES_SECURE_CHANNEL', 
    '/person/edit/**': 'REQUIRES_SECURE_CHANNEL', 
    '/person/show': 'REQUIRES_INSECURE_CHANNEL' 
] 

grails.plugins.springsecurity.portMapper.httpPort=80 
grails.plugins.springsecurity.portMapper.httpsPort=443 

Kiedy dostęp akcję osoba/edycji mam pętlę przekierowania w przeglądarce (używając wdrożony plik WAR do Jetty 9 na dedykowanej maszynie CentOs 6). Jest to przy użyciu dostarczonego magazynu kluczy, który jest dostarczany z Jetty 9, po prostu odkomentuj linie w pliku start.ini, aby go użyć.

Główną stroną konfiguracji Jetty SSL jest here. Nie jest dla mnie jasne, czy wystarczy zaktualizować plik start.ini? Jeśli nie, w jaki dokładnie sposób można dodać linie w pomost-https.xml opisane w niniejszym linka, czyli linie:

<New id="sslContextFactory" class="org.eclipse.jetty.util.ssl.SslContextFactory"> 
    <Set name="KeyStorePath"><Property name="jetty.home" default="." />/etc/keystore</Set> 
    <Set name="KeyStorePassword">OBF:1vny1zlo1x8e1vnw1vn61x8g1zlu1vn4</Set> 
    <Set name="KeyManagerPassword">OBF:1u2u1wml1z7s1z7a1wnl1u2g</Set> 
    <Set name="TrustStorePath"><Property name="jetty.home" default="." />/etc/keystore</Set> 
    <Set name="TrustStorePassword">OBF:1vny1zlo1x8e1vnw1vn61x8g1zlu1vn4</Set> 
</New> 

Nie wiesz, jak je dodać, ale wydają się one również duplikat początku. linie pliku ini powyżej.

Czy możesz pomóc mi uzyskać najbardziej podstawową wersję Jetty SSL? Dzięki wielkie.


Jeśli nie jesteś zaznajomiony z Grails, możesz go po prostu pobrać, a następnie utworzyć klasę domeny - istnieje opcja wiersza poleceń. Następnie podaj pola pola String firstName, String lastName. Następnie są polecenia do generowania kontrolera i widoki dla niego - to wszystko jest całkowicie automatyczne. Następnie dodaje się wtyczkę, spring-security-core. W rozdziale 16/17 tego dokumentu i jak już pokazałem, kiedy listy kontrolują akcje kontrolera, takie jak osoba/edycja.

Odpowiedz

4

Rzeczywiście wystarczy tutaj, aby część Jetty działała przy użyciu domyślnego magazynu kluczy próbnych, który wysyłamy w dystrybucji Jetty 9.0.6.

Po prostu powyższy blurb wystarcza do pracy z SSL w obrębie Jetty. Pobrałem wersję 9.0.6 i odkomentowałem te linie i to działa. Cóż, musiałem przejść do pliku start.d/demo.ini i usunąć ostatnie dwa wiersze z etc/jetty-ssl.xml i etc/jetty-https.xml, ponieważ byłyby uruchamiane dwa razy ... ale dygresja .

Jeśli uruchomisz Jetty, możesz przejść do strony https://localhost:8443, która będzie narzekać na niezaufany certyfikat, a następnie załaduje stronę dystrybucji pomostu.

W oparciu o to powiedziałbym, że jest to prawdopodobnie problem z konfiguracją grails, ale niestety nie znam odpowiedzi, przepraszam.

+0

Dzięki! Okazuje się, że Grails pozwala na określenie bezpiecznych kanałów, które działają "na pulpicie" ze starszą wersją Jetty za pośrednictwem wtyczki, ale nie działa w nowszych wersjach Jetty (które też wdrażam). Ta kwestia w połączeniu ze zmianą sposobu włączania SSL i określania certyfikatów między Jetty 9.05/9.06 (via start.ini) i nowszą wersją Jetty 9.10 wyrzuciła mnie - nic nie dało się uruchomić. – Ray

+0

Dziękujemy za wyjaśnienie odpowiedniej wersji do użycia - na przykład 9.06, ponieważ mechanizm konfiguracji dla wersji 9.10 został sfinalizowany, a powiązana dokumentacja jest aktualizowana. – Ray

0

Począwszy od mola 9.1, sprawy się zmieniły i musisz postępować zgodnie z instrukcjami w here, aby rzeczy wyglądały poprawnie, dla każdego dewelopera Jetty. Co więcej, nie powinieneś zmieniać/usuwać/edytować niczego w katalogach ${jetty.home}. Oto, co należy zrobić w przypadku protokołu SSL/HTTPS z certyfikatem samopodpisanym na Jetty 9.1+:

(a) skonfiguruj zmienną środowiskową $JETTY_HOME, tak aby wskazywała miejsce zainstalowania pakietu smoły pocztowej, na przykład /opt/jetty/.

(b) Utwórz nowy katalog, /tmp/myJettyApp, kieruj go do $JETTY_BASE w swoim środowisku.

(c) cd do $JETTY_BASE

(d) Postępuj zgodnie z instrukcjami w here:

/home/sonny $ cd $JETTY_BASE 
/tmp/myJettyApp/ $ java -jar $JETTY_HOME/start.jar --add-to-startd=https,http2 

(e) Ustaw port, jeśli chcesz:

/home/sonny $ cd $JETTY_BASE; 
/tmp/myJettyApp/ $ java -jar $JETTY_HOME/start.jar jetty.ssl.port=8444 

(f) A teraz uruchom pomost:

/tmp/myJettyApp/ $ java -jar $JETTY_HOME/start.jar 

widać, że HTTPS jest uruchomiony na porcie 8444. Teraz, jeśli chcesz, aby słuchać molo w tradycyjnym portu HTTPS, trzeba użyć sudo do uruchomienia:

/tmp/myJettyApp/ $ java -jar $JETTY_HOME/start.jar jetty.ssl.port=443 
/tmp/myJettyApp/ $ sudo java -jar $JETTY_HOME/start.jar 

Zauważ, że to już nie jaźń - certyfikaty itp. automagicznie.

Teraz, jeśli chcesz wygenerować swój własny certyfikat z podpisem własnym (powiedzmy, bo chcesz zmodyfikować validity do dowolnej dużej lub małej wartości, w zależności od potrzeb), postępuj zgodnie z instrukcjami w here wygenerować nowy samopodpisany certyfikat przy użyciu keytool, a następnie umieść go w $JETTY_BASE/etc/ i odpowiednio zmień $JETTY_BASE/start.d/ssl.ini dla jetty.sslContext.keyStorePassword i jetty.sslContext.keyManagerPassword. BTW, dla dwóch ostatnich haseł ssl.ini, możesz użyć zaciemnionego hasła tekstowego, którego używasz, gdy używasz keytool lub używasz zwykłego tekstu. Jeśli chcesz je zamaskować, uruchom {jetty.home} $ java -cp lib/jetty-util-9.3.6.v20151106.jar org.eclipse.jetty.util.security.Password "MyInterestingAndAwesomePassword" Mamy nadzieję, że to pomoże komuś.