⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 protocolhttptest.java

📁 一套JAVA的CA证书签发系统.
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/************************************************************************* *                                                                       * *  EJBCA: The OpenSource Certificate Authority                          * *                                                                       * *  This software is free software; you can redistribute it and/or       * *  modify it under the terms of the GNU Lesser General Public           * *  License as published by the Free Software Foundation; either         * *  version 2.1 of the License, or any later version.                    * *                                                                       * *  See terms of license at gnu.org.                                     * *                                                                       * *************************************************************************/ package se.anatom.ejbca.protocol.junit;import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.InputStreamReader;import java.math.BigInteger;import java.rmi.RemoteException;import java.security.KeyPair;import java.security.KeyPairGenerator;import java.security.cert.X509Certificate;import java.security.interfaces.RSAPrivateKey;import java.util.Collection;import java.util.Date;import java.util.Iterator;import javax.ejb.DuplicateKeyException;import javax.naming.Context;import javax.naming.NamingException;import org.apache.log4j.Logger;import org.bouncycastle.ocsp.BasicOCSPResp;import org.bouncycastle.ocsp.CertificateID;import org.bouncycastle.ocsp.OCSPReq;import org.bouncycastle.ocsp.OCSPReqGenerator;import org.bouncycastle.ocsp.OCSPResp;import org.bouncycastle.ocsp.RespData;import org.bouncycastle.ocsp.RevokedStatus;import org.bouncycastle.ocsp.SingleResp;import org.bouncycastle.ocsp.UnknownStatus;import junit.framework.*;import com.meterware.httpunit.*;import se.anatom.ejbca.SecConst;import se.anatom.ejbca.util.CertTools;import se.anatom.ejbca.ca.caadmin.CAInfo;import se.anatom.ejbca.ca.caadmin.ICAAdminSessionHome;import se.anatom.ejbca.ca.caadmin.ICAAdminSessionRemote;import se.anatom.ejbca.ca.crl.RevokedCertInfo;import se.anatom.ejbca.ca.sign.ISignSessionHome;import se.anatom.ejbca.ca.sign.ISignSessionRemote;import se.anatom.ejbca.ca.store.CertificateData;import se.anatom.ejbca.ca.store.CertificateDataHome;import se.anatom.ejbca.ca.store.CertificateDataPK;import se.anatom.ejbca.log.Admin;import se.anatom.ejbca.protocol.ScepRequestMessage;import se.anatom.ejbca.ra.UserDataHome;import se.anatom.ejbca.ra.UserDataPK;import se.anatom.ejbca.ra.UserDataRemote;import se.anatom.ejbca.util.Base64;/** Tests http pages of ocsp and scep  **/public class ProtocolHttpTest extends TestCase {    private static Logger log = Logger.getLogger(TestMessages.class);    private static final String httpReqPath = "http://127.0.0.1:8080/ejbca";    private static final String resourceOcsp = "publicweb/status/ocsp";    private static final String resourceScep = "publicweb/apply/scep/pkiclient.exe";    static byte[] openscep = Base64.decode(("MIIGqwYJKoZIhvcNAQcCoIIGnDCCBpgCAQExDjAMBggqhkiG9w0CBQUAMIICuwYJ" +            "KoZIhvcNAQcBoIICrASCAqgwggKkBgkqhkiG9w0BBwOgggKVMIICkQIBADGB1TCB" +            "0gIBADA7MC8xDzANBgNVBAMTBlRlc3RDQTEPMA0GA1UEChMGQW5hVG9tMQswCQYD" +            "VQQGEwJTRQIIbzEhUVZYO3gwDQYJKoZIhvcNAQEBBQAEgYCksIoSXYsCQPot2DDW" +            "dexdFqLj1Fuz3xSpu/rLozXKxEY0n0W0JXRR9OxxuyqNw9cLZhiyWkNsJGbP/rEz" +            "yrXe9NXuLK5U8+qqE8OhnY9BhCxjeUJSLni6oCSi7YzwOqdg2KmifJrQQI/jZIiC" +            "tSISAtE6qi6DKQwLCkQLmokLrjCCAbIGCSqGSIb3DQEHATARBgUrDgMCBwQILYvZ" +            "rBWuC02AggGQW9o5MB/7LN4o9G4ZD1l2mHzS+g+Y/dT2qD/qIaQi1Mamv2oKx9eO" +            "uFtaGkBBGWZlIKg4mm/DFtvXqW8Y5ijAiQVHHPuRKNyIV6WVuFjNjhNlM+DWLJR+" +            "rpHEhvB6XeDo/pd+TyOKFcxedMPTD7U+j46yd46vKdmoKAiIF21R888uVSz3GDts" +            "NlqgvZ7VlaI++Tj7aPdOI7JTdQXZk2FWF7Ql0LBIPwk9keffptF5if5Y+aHqB0a2" +            "uQj1aE8Em15VG8p8MmLJOX0OA1aeqfxR0wk343r44UebliY2DE8cEnym/fmya30/" +            "7WYzJ7erWofO2ukg1yc93wUpyIKxt2RGIy5geqQCjCYSSGgaNFafEV2pnOVSx+7N" +            "9z/ICNQfDBD6b83MO7yPHC1cXcdREKHHeqaKyQLiVRk9+R/3D4vEZt682GRaUKOY" +            "PQXK1Be2nyZoo4gZs62nZVAliJ+chFkEUog9k9OsIvZRG7X+VEjVYBqxlE1S3ikt" +            "igFXiuLC/LDCi3IgVwQjfNx1/mhxsO7GSaCCAfswggH3MIIBYKADAgEDAiA4OEUy" +            "REVFNDcwNjhCQjM3RjE5QkE2NDdCRjAyRkQwRjANBgkqhkiG9w0BAQQFADAyMQsw" +            "CQYDVQQGEwJTZTERMA8GA1UEChMIUHJpbWVLZXkxEDAOBgNVBAMTB1RvbWFzIEcw" +            "HhcNMDMwNjAxMDgzNDQyWhcNMDMwNzAxMDgzNDQyWjAyMQswCQYDVQQGEwJTZTER" +            "MA8GA1UEChMIUHJpbWVLZXkxEDAOBgNVBAMTB1RvbWFzIEcwgZ8wDQYJKoZIhvcN" +            "AQEBBQADgY0AMIGJAoGBAOu47fpIQfzfSnEBTG2WJpKZz1891YLNulc7XgMk8hl3" +            "nVC4m34SaR7eXR3nCsorYEpPPmL3affaPFsBnNBQNoZLxKmQ1RKiDyu8dj90AKCP" +            "CFlIM2aJbKMiQad+dt45qse6k0yTrY3Yx0hMH76tRkDif4DjM5JUvdf4d/zlYcCz" +            "AgMBAAEwDQYJKoZIhvcNAQEEBQADgYEAGNoWI02kXNEA5sPHb3KEY8QZoYM5Kha1" +            "JA7HLmlXKy6geeJmk329CUnvF0Cr7zxbMkFRdUDUtR8omDDnGlBSOCkV6LLYH939" +            "Z8iysfaxigZkxUqUYGLtYHhsEjVgcpfKZVxTz0E2ocR2P+IuU04Duel/gU4My6Qv" +            "LDpwo1CQC10xggHDMIIBvwIBATBWMDIxCzAJBgNVBAYTAlNlMREwDwYDVQQKEwhQ" +            "cmltZUtleTEQMA4GA1UEAxMHVG9tYXMgRwIgODhFMkRFRTQ3MDY4QkIzN0YxOUJB" +            "NjQ3QkYwMkZEMEYwDAYIKoZIhvcNAgUFAKCBwTASBgpghkgBhvhFAQkCMQQTAjE5" +            "MBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTAzMDYw" +            "MTA4MzQ0MlowHwYJKoZIhvcNAQkEMRIEEBqGJFo7n4B8sFBCi54PckIwIAYKYIZI" +            "AYb4RQEJBTESBBA77Owxh2rbflhXsDYw3xsLMDAGCmCGSAGG+EUBCQcxIhMgODhF" +            "MkRFRTQ3MDY4QkIzN0YxOUJBNjQ3QkYwMkZEMEYwDQYJKoZIhvcNAQEBBQAEgYB4" +            "BPcw4NPIt4nMOFKSGg5oM1nGDPGFN7eorZV+/2uWiQfdtK4B4lzCTuNxWRT853dW" +            "dRDzXBCGEArlG8ef+vDD/HP9SX3MQ0NJWym48VI9bTpP/mJlUKSsfgDYHohvUlVI" +            "E5QFC6ILVLUmuWPGchUEAb8t30DDnmeXs8QxdqHfbQ==").getBytes());    static byte[] unknowncacertBytes = Base64.decode(("MIICLDCCAZWgAwIBAgIIbzEhUVZYO3gwDQYJKoZIhvcNAQEFBQAwLzEPMA0GA1UE" +            "AxMGVGVzdENBMQ8wDQYDVQQKEwZBbmFUb20xCzAJBgNVBAYTAlNFMB4XDTAyMDcw" +            "OTEyNDc1OFoXDTA0MDgxNTEyNTc1OFowLzEPMA0GA1UEAxMGVGVzdENBMQ8wDQYD" +            "VQQKEwZBbmFUb20xCzAJBgNVBAYTAlNFMIGdMA0GCSqGSIb3DQEBAQUAA4GLADCB" +            "hwKBgQDZlACHRwJnQKlgpMqlZQmxvCrJPpPFyhxvjDHlryhp/AQ6GCm+IkGUVlwL" +            "sCnjgZH5BXDNaVXpkmME8334HFsxVlXqmZ2GqyP6kptMjbWZ2SRLBRKjAcI7EJIN" +            "FPDIep9ZHXw1JDjFGoJ4TLFd99w9rQ3cB6zixORoyCZMw+iebwIBEaNTMFEwDwYD" +            "VR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUY3v0dqhUJI6ldKV3RKb0Xg9XklEwHwYD" +            "VR0jBBgwFoAUY3v0dqhUJI6ldKV3RKb0Xg9XklEwDQYJKoZIhvcNAQEFBQADgYEA" +            "i1P53jnSPLkyqm7i3nLNi+hG7rMgF+kRi6ZLKhzIPyKcAWV8iZCI8xl/GurbZ8zd" +            "nTiIOfQIP9eD/nhIIo7n4JOaTUeqgyafPsEgKdTiZfSdXjvy6rj5GiZ3DaGZ9SNK" +            "FgrCpX5kBKVbbQLO6TjJKCjX29CfoJ2TbP1QQ6UbBAY=").getBytes());    private static Context ctx;    private static ISignSessionHome home;    private static ISignSessionRemote remote;    private static UserDataHome userhome;    private static CertificateDataHome certhome;    private static int caid=0;    private static Admin admin;    private static X509Certificate cacert = null;    private static X509Certificate ocspTestCert = null;    private static X509Certificate unknowncacert = null;    public static void main( String args[] ) {        junit.textui.TestRunner.run( suite() );    }    public static TestSuite suite() {        return new TestSuite( ProtocolHttpTest.class );    }    public ProtocolHttpTest( String name ) {        super( name );    }    protected void setUp() throws Exception {        log.debug(">setUp()");        // Install BouncyCastle provider        CertTools.installBCProvider();        // We want to get error responses without exceptions        HttpUnitOptions.setExceptionsThrownOnErrorStatus(false);        admin = new Admin(Admin.TYPE_BATCHCOMMANDLINE_USER);                ctx = getInitialContext();        Object obj = ctx.lookup("CAAdminSession");        ICAAdminSessionHome cahome = (ICAAdminSessionHome) javax.rmi.PortableRemoteObject.narrow(obj, ICAAdminSessionHome.class);        ICAAdminSessionRemote casession = cahome.create();                  Collection caids = casession.getAvailableCAs(admin);        Iterator iter = caids.iterator();        if (iter.hasNext()) {            caid = ((Integer)iter.next()).intValue();        } else {            assertTrue("No active CA! Must have at least one active CA to run tests!", false);        }        CAInfo cainfo = casession.getCAInfo(admin,caid);        Collection certs = cainfo.getCertificateChain();        if (certs.size() > 0) {            Iterator certiter = certs.iterator();            cacert = (X509Certificate)certiter.next();        } else {            log.error("NO CACERT for caid "+caid);        }        obj = ctx.lookup("RSASignSession");        home = (ISignSessionHome) javax.rmi.PortableRemoteObject.narrow(obj, ISignSessionHome.class);        remote = home.create();        obj = ctx.lookup("UserData");        userhome = (UserDataHome) javax.rmi.PortableRemoteObject.narrow(obj, UserDataHome.class);        obj = ctx.lookup("CertificateData");        certhome = (CertificateDataHome) javax.rmi.PortableRemoteObject.narrow(obj, CertificateDataHome.class);        unknowncacert = CertTools.getCertfromByteArray(unknowncacertBytes);        log.debug("<setUp()");    }    protected void tearDown() throws Exception {    }    private Context getInitialContext() throws NamingException {        log.debug(">getInitialContext");        Context ctx = new javax.naming.InitialContext();        log.debug("<getInitialContext");        return ctx;    }    /**     * Generates a RSA key pair.     *     * @return KeyPair the generated key pair     *     * @throws Exception if en error occurs...     */    private static KeyPair genKeys() throws Exception {        KeyPairGenerator keygen = KeyPairGenerator.getInstance("RSA", "BC");        keygen.initialize(512);        log.debug("Generating keys, please wait...");        KeyPair rsaKeys = keygen.generateKeyPair();        log.debug("Generated " + rsaKeys.getPrivate().getAlgorithm() + " keys with length" +            ((RSAPrivateKey) rsaKeys.getPrivate()).getModulus().bitLength());        return rsaKeys;    } // genKeys    public void test01Access() throws Exception {        WebConversation wc   = new WebConversation();                // Hit with GET gives a 405 with OCSP: BAD_METHOD        WebRequest request   = new GetMethodWebRequest( httpReqPath + '/' + resourceOcsp );        WebResponse response = wc.getResponse( request );        assertEquals( "Response code", 405, response.getResponseCode() );        // Hit scep, gives a 400: Bad Request        request   = new GetMethodWebRequest( httpReqPath + '/' + resourceScep );        response = wc.getResponse( request );        assertEquals( "Response code", 400, response.getResponseCode() );    }    /** Tests scep message from OpenScep     * Prerequisites for running the tests is to have a CA setup with      * issuerDN: CN=TestCA,O=AnaTom,C=SE.     * @throws Exception error     */    public void test02OpenScep() throws Exception {        log.debug(">test02OpenScep()");        ScepRequestMessage msg = new ScepRequestMessage(openscep);        // send message to server and see what happens        WebConversation wc   = new WebConversation();        WebRequest request = new GetMethodWebRequest( httpReqPath + '/' + resourceScep );        request.setParameter("operation", "PKIOperation");

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -