Tomcat Server/Client Self-Signed SSL Certificate

后端 未结 4 2147
死守一世寂寞
死守一世寂寞 2020-11-28 01:46

I have an Apache Tomcat 6.x server running with a self-signed SSL certificate. I want the client to present their own certificate to the server so I can authenticate them b

4条回答
  •  情话喂你
    2020-11-28 02:25

    Finally got the solution to my problem, so I'll post the results here if anyone else gets stuck.

    Thanks to Michael Martin of Michael's Software Thoughts & Ramblings I discovered that:

    keytool by default uses the DSA algorithm when generating the self-signed cert. Earlier versions of Firefox accepted these keys without problem. With Firefox 3 beta 5, using DSA doesn't work, but using RSA does. Passing "-keyalg RSA" when generating the self-signed certificate creates a cert the Firefox 3 beta 5 fully accepts.

    I simply set that flag, cleared all caches in FireFox and it worked like a charm! I am using this as a test-setup for my project and I need to share this with other people, so I wrote a little batch script that creates two SSL certificates. One can be dropped into the Tomcat setup and the other is a .p12 file that can be imported into FireFox/IE. Thanks!

    Usage: first command-line argument is the username of the client. All passwords are "password" (with no quotations). Change any of the hard-coded bits to meet your needs.

    @echo off
    if "%1" == "" goto usage
    
    keytool -genkeypair -alias servercert -keyalg RSA -dname "CN=Web Server,OU=Unit,O=Organization,L=City,S=State,C=US" -keypass password -keystore server.jks -storepass password
    keytool -genkeypair -alias %1 -keystore %1.p12 -storetype pkcs12 -keyalg RSA -dname "CN=%1,OU=Unit,O=Organization,L=City,S=State,C=US" -keypass password -storepass password
    keytool -exportcert -alias %1 -file %1.cer -keystore %1.p12 -storetype pkcs12 -storepass password
    keytool -importcert -keystore server.jks -alias %1 -file %1.cer -v -trustcacerts -noprompt -storepass password
    keytool -list -v -keystore server.jks -storepass password
    del %1.cer
    goto end
    
    :usage
    echo Need user id as first argument: generate_keystore [username]
    goto end
    
    :end
    pause
    

    The results are two files. One called server.jks that you drop into Tomcat and another file called {username}.p12 that you import into your browser. The server.jks file has the client certificate added as a trusted cert.

    I hope someone else finds this useful.

    And here is the the XML that needs to be added to your Tomcat conf/sever.xml file (only tested on on Tomcat 6.x)

    
    

    For Tomcat 7:

        
    

提交回复
热议问题