Avatar billede mik28 Seniormester
27. marts 2003 - 06:28 Der er 31 kommentarer og
2 løsninger

SSL og Tomcat

Hvorfor virker det her ikke

<!-- Define an SSL HTTP/1.1 Connector on port 8443 -->
   
    <Connector className="org.apache.catalina.connector.http.HttpConnector"
              port="8443" minProcessors="5" maxProcessors="75"
              enableLookups="true"
          acceptCount="10" debug="0" scheme="https" secure="true">
      <Factory className="org.apache.catalina.net.SSLServerSocketFactory"
              clientAuth="false" protocol="TLS"/>
    </Connector>

Jeg har kørt
%JAVA_HOME%\bin\keytool -genkey -alias tomcat -keyalg RSA
(hvorfor skal jeg taste al det ind og hvad er det for et password ???)

Jeg får følgende fejl når jeg prøver at starte tomcat

Settings\Administrator\.keystore (The system cannot find the file specified)
        at org.apache.catalina.connector.http.HttpConnector.initialize(Unknown S
ource)
        at org.apache.catalina.core.StandardService.initialize(Unknown Source)
        at org.apache.catalina.core.StandardServer.initialize(Unknown Source)
        at org.apache.catalina.startup.Catalina.start(Unknown Source)
        at org.apache.catalina.startup.Catalina.execute(Unknown Source)
        at org.apache.catalina.startup.Catalina.process(Unknown Source)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:324)
        at org.apache.catalina.startup.Bootstrap.main(Unknown Source)
----- Root Cause -----
java.io.FileNotFoundException: D:\Documents and Settings\Administrator\.keystore
(The system cannot find the file specified)
        at java.io.FileInputStream.open(Native Method)
        at java.io.FileInputStream.<init>(FileInputStream.java:103)
        at java.io.FileInputStream.<init>(FileInputStream.java:66)
        at org.apache.catalina.net.SSLServerSocketFactory.initKeyStore(Unknown S
ource)
        at org.apache.catalina.net.SSLServerSocketFactory.initialize(Unknown Sou
rce)
        at org.apache.catalina.net.SSLServerSocketFactory.createSocket(Unknown S
ource)
        at org.apache.catalina.connector.http.HttpConnector.open(Unknown Source)

        at org.apache.catalina.connector.http.HttpConnector.initialize(Unknown S
ource)
        at org.apache.catalina.core.StandardService.initialize(Unknown Source)
        at org.apache.catalina.core.StandardServer.initialize(Unknown Source)
        at org.apache.catalina.startup.Catalina.start(Unknown Source)
        at org.apache.catalina.startup.Catalina.execute(Unknown Source)
        at org.apache.catalina.startup.Catalina.process(Unknown Source)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:324)
        at org.apache.catalina.startup.Bootstrap.main(Unknown Source)
Avatar billede disky Nybegynder
27. marts 2003 - 07:26 #1
fejlen står lige her:
java.io.FileNotFoundException: D:\Documents and Settings\Administrator\.keystore
(The system cannot find the file specified)

Den leder efter filen .keystore som ikke finde på den angivne path.
Avatar billede arne_v Ekspert
27. marts 2003 - 09:03 #2
1)  enten
      JDK 1.4.x
    eller
      JDK 1.3.x
      JSSE 1.0.x (enten kopier jar filer til JDK lib/ext eller lad JSSE_HOME pege på JSSE root directory
2)  keytool -genkey -alias tomcat -keyalg RSA
    svar på alle spørgsmål
    angiv samme password til keystore og key
    hvis password forskellig fra "changeit" ændres i server.xml:

      <Factory className="org.apache.coyote.tomcat4.CoyoteServerSocketFactory"
              clientAuth="false" protocol="TLS" keystorePass="xxxxxx" />
3)  start Tomcat

og https://x.x.x:8443/whatever bør virke

[det virker naturligvis først helt optimalt hvis du køber et
rigtigt certifikat som browserne accepterer]
Avatar billede arne_v Ekspert
27. marts 2003 - 09:04 #3
Tomcat docs har en udmærket "SSL Configuration HOW-TO" som beskriver det.
Avatar billede mik28 Seniormester
27. marts 2003 - 10:33 #4
Så virker det :-) Tak for hjælpen
Avatar billede arne_v Ekspert
27. marts 2003 - 10:38 #5
Alle de spørgsmål du svarer på bliver skrevet i dit certifikat og
kan ses af dem der skal acceptere dit certifikat.
Avatar billede mik28 Seniormester
27. marts 2003 - 10:40 #6
Kan jeg ændre den information
Avatar billede mik28 Seniormester
27. marts 2003 - 10:41 #7
Jeg har prøvet at skrive

keytool -genkey -alias tomcat -keyalg RSA

igen, men det får jeg ikke lov til
Avatar billede arne_v Ekspert
27. marts 2003 - 10:43 #8
Du kan ihvertfald slette den med:

keytool -delete -alias tomcat

og så køre den igen !
Avatar billede mik28 Seniormester
27. marts 2003 - 10:50 #9
Det virker fint.
Avatar billede mik28 Seniormester
27. marts 2003 - 11:00 #10
Ideen var at jeg ville have min /adm del til at kører på SSL. Det virker sådan at jeg har en index.html som ligger under /adm og indeholder en form hvis indhold bliver sendt videre til en servlet o.s.v Er der en smart måde jeg kan få den til at hoppe over på ssl når /adm/index.html bliver loaded?
Avatar billede arne_v Ekspert
27. marts 2003 - 11:10 #11
Simpel løsning:
  lav links til https://x.x.x/adm i.s.f. /adm

Evt. supleret med kode a la:

if(request.getSchema() != "https") {
    response.sendRedirect("https://x.x.x/adm/foobar");
}
Avatar billede mik28 Seniormester
27. marts 2003 - 11:23 #12
Det skulle jo gerne være sådan at når man loader

http://www.web-oasen.dk/mortallovebeta/adm/index.html

så bliver man smidt over på ssl. Jeg kan vel egenligt bare ligger hele siden ind i et script :-)
Avatar billede mik28 Seniormester
27. marts 2003 - 11:46 #13
Kan jeg ikke lave index.html om til index.jsp og så tilføje?

<%@ page language="java" import="java.util.*,javax.servlet.http.*" %>

<%
if(request.getSchema() != "https") {
    response.sendRedirect("https://www.web-oasen.dk/mortallovebeta/adm/");
}
%>
Avatar billede arne_v Ekspert
27. marts 2003 - 11:52 #14
Jo.

Det burde virke.
Avatar billede mik28 Seniormester
27. marts 2003 - 11:52 #15
Avatar billede arne_v Ekspert
27. marts 2003 - 11:53 #16
Hov.

Du skal nok lave en return efter sendRedirect.

Og husk at lave testet inden du outputter noget.
Avatar billede mik28 Seniormester
27. marts 2003 - 11:58 #17
<%
if(request.getSchema() != "https") {
    response.sendRedirect("https://www.web-oasen.dk/mortallovebeta/adm/\n");
}
%>
Avatar billede mik28 Seniormester
27. marts 2003 - 12:01 #18
jsp siden ser således ud

<html>
<%@ page language="java" import="java.util.*,javax.servlet.http.*" %>

<%
if(request.getSchema() != "https") {
    response.sendRedirect("https://www.web-oasen.dk/mortallovebeta/adm/\n");
}
%>
<head>
<style type="text/css">
body {
//background-color: #555555;
margin:0,10,10,10;
}

</style>
</head>
<body onload='self.focus();document.form.navn.focus();'>
<table style="width:200px;border:ridge;border-width:thin">
<tr><td>
<p align='center'>Login</p>
</td></tr>
<tr><td>
<form method='post' name='form' action='../servlet/Login'>
<table border='0' cellpadding='0' cellspacing='0'>
<tr>
<tr><td>User</td><td><input type='text' name='navn' value='' size='20'></td></tr>
<tr><td>Password</td><td><input type='password' name='pass' value='' size='20'></td></tr>
<tr><td><input type='submit' value='Login'></td></tr>
</form>
</table>
</td></tr>
</table>
</body>
</html>
Avatar billede arne_v Ekspert
27. marts 2003 - 12:07 #19
Det var ikke det jeg mente med return !

<%
if(request.getSchema() != "https") {
    response.sendRedirect("https://www.web-oasen.dk/mortallovebeta/adm/");
    return;
}
%>

:-)
Avatar billede mik28 Seniormester
27. marts 2003 - 12:08 #20
Generated servlet error:
D:\tomcat4.0\work\localhost\mortallovebeta\adm\index$jsp.java:65: Method getSchema() not found in interface javax.servlet.http.HttpServletRequest.
        if(request.getSchema() != "https") {
Avatar billede mik28 Seniormester
27. marts 2003 - 12:10 #21
Jeg har en anden side hvor jeg også redirecter

<%
String brugernavn = (String)session.getAttribute("brugernavn");

if (brugernavn==null || brugernavn.equals("")) {
  response.sendRedirect("adm/index.html");
}
%>

Det virker fint
Avatar billede arne_v Ekspert
27. marts 2003 - 12:15 #22
Min tyrk fejl.

Det er getScheme ikke getSchema.

Det er muligt at den return ikke er nødvendigt. Men den skader ihvertfald
ikke og der er ikke nogen grund til at udføre resten af siden/koden.
Avatar billede mik28 Seniormester
27. marts 2003 - 12:31 #23
Hvad er det så lige der er galt med det her. Nu vil den slet ikke vise siden

<html>
<%@ page language="java" import="java.util.*,javax.servlet.http.*" %>

<%
if(request.getScheme() != "https") {
    response.sendRedirect("https://www.web-oasen.dk/mortallovebeta/adm/index.jsp");
}
%>
<head>
<style type="text/css">
body {
//background-color: #555555;
margin:0,10,10,10;
}

</style>
</head>
<body onload='self.focus();document.form.navn.focus();'>
<table style="width:200px;border:ridge;border-width:thin">
<tr><td>
<p align='center'>Login</p>
</td></tr>
<tr><td>
<form method='post' name='form' action='../servlet/Login'>
<table border='0' cellpadding='0' cellspacing='0'>
<tr>
<tr><td>User</td><td><input type='text' name='navn' value='' size='20'></td></tr>
<tr><td>Password</td><td><input type='password' name='pass' value='' size='20'></td></tr>
<tr><td><input type='submit' value='Login'></td></tr>
</form>
</table>
</td></tr>
</table>
</body>
</html>
Avatar billede mik28 Seniormester
27. marts 2003 - 12:37 #24
Det er da strange
Avatar billede mik28 Seniormester
27. marts 2003 - 12:38 #25
I hvert tilfælde for mig
Avatar billede arne_v Ekspert
27. marts 2003 - 12:38 #26
Amatør-fejl fra min side !

Prøv lige med:

if(!request.getScheme().equals("https")) {
Avatar billede arne_v Ekspert
27. marts 2003 - 12:38 #27
Det er vist ikke lige min dag idag.
Avatar billede mik28 Seniormester
27. marts 2003 - 12:44 #28
Den vil slet ikke vise siden

http://www.web-oasen.dk/mortallovebeta/adm/

Det er den som hedder index.jsp og den er mangen til den jeg postede 12:31:04 på nær den ene ændring
Avatar billede mik28 Seniormester
27. marts 2003 - 12:46 #29
Jeg prøver lige at genstarte maskine.
Avatar billede mik28 Seniormester
27. marts 2003 - 12:49 #30
Jeg skal også have fundet ud af hvor jeg indstiller i hvilken rækkefølge tomcat leder efter index filer (index.jsp,index.html,index.htm o.s.v.) Jeg troede det var i server.xml men der kan jeg ikke se noget
Avatar billede mik28 Seniormester
27. marts 2003 - 12:51 #31
Så er det oppe og kører igen :-)
Avatar billede mik28 Seniormester
27. marts 2003 - 13:03 #32
Jeg havde jo glemt at angive porten :8443, men jeg kan stadig ikke se hvorfor jeg ikke bare blev sendt videre
Avatar billede arne_v Ekspert
27. marts 2003 - 13:27 #33
Åh.

Default for https er ikke 80 men 443 !
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester