1 13 14 package org.ejbca.samples; 15 16 import java.io.BufferedReader ; 17 import java.io.ByteArrayOutputStream ; 18 import java.io.InputStreamReader ; 19 import java.io.PrintWriter ; 20 import java.net.HttpURLConnection ; 21 import java.net.URL ; 22 import java.net.URLConnection ; 23 import java.net.URLEncoder ; 24 import java.security.KeyPair ; 25 26 import org.apache.log4j.BasicConfigurator; 27 import org.apache.log4j.Logger; 28 import org.bouncycastle.asn1.DEROutputStream; 29 import org.bouncycastle.jce.PKCS10CertificationRequest; 30 import org.ejbca.core.model.ca.catoken.CATokenConstants; 31 import org.ejbca.util.Base64; 32 import org.ejbca.util.CertTools; 33 import org.ejbca.util.KeyTools; 34 35 36 37 64 public class HttpGetCert { 65 private static Logger log = Logger.getLogger(HttpGetCert.class); 66 67 70 public HttpGetCert() { 71 log.debug(">HttpGetCert:"); 72 73 78 log.debug("<HttpGetCert:"); 79 } 80 81 83 94 95 97 108 109 119 120 122 154 155 162 private URLConnection getUrlConnection(URL url) throws Exception { 163 URLConnection con = url.openConnection(); 164 165 167 173 return con; 174 } 175 176 189 public void sendHttpReq(String requestUrl, String request, String username, String password) 190 throws Exception { 191 log.debug(">sendHttpReq: request=" + request.toString() + ", username=" + username + 192 ", password=" + password); 193 194 if (requestUrl == null) { 195 throw new IllegalArgumentException ("requesturl can not be null."); 196 } 197 198 log.debug("Sending request to: " + requestUrl); 199 200 URL url = new URL (requestUrl); 201 HttpURLConnection con = (HttpURLConnection ) getUrlConnection(url); 202 203 con.setDoOutput(true); 205 con.setRequestMethod("POST"); 206 207 PrintWriter out = new PrintWriter (con.getOutputStream()); 209 out.println("pkcs10req=" + URLEncoder.encode(request,"UTF-8") + "&user=" + 210 URLEncoder.encode(username,"UTF-8") + "&password=" + URLEncoder.encode(password,"UTF-8") + 211 "&submit=Submit+Query"); 212 out.close(); 213 214 BufferedReader in = new BufferedReader (new InputStreamReader (con.getInputStream())); 216 String inputLine; 217 218 while ((inputLine = in.readLine()) != null) { 219 System.out.println(inputLine); 220 } 221 222 if (con.getResponseCode() == 200) { 223 log.debug("Received certificate reply."); 224 } else { 225 throw new Exception ("Error sending PKCS10-request."); 226 } 227 228 con.disconnect(); 230 231 log.debug("<sendHttpReq:"); 232 } 233 234 236 243 public static void main(String [] args) throws Exception { 244 BasicConfigurator.configure(); 246 247 CertTools.installBCProvider(); 249 250 System.out.print("Generating 512 bit RSA keys."); 252 253 KeyPair rsaKeys = KeyTools.genKeys("512", CATokenConstants.KEYALGORITHM_RSA); 254 System.out.println("Keys generated."); 255 256 PKCS10CertificationRequest req = new PKCS10CertificationRequest("SHA1WithRSA", 258 CertTools.stringToBcX509Name("C=SE,O=AnaTom,CN=HttpTest"), rsaKeys.getPublic(), 259 null, rsaKeys.getPrivate()); 260 ByteArrayOutputStream bOut = new ByteArrayOutputStream (); 261 DEROutputStream dOut = new DEROutputStream(bOut); 262 dOut.writeObject(req); 263 dOut.close(); 264 265 ByteArrayOutputStream bos1 = new ByteArrayOutputStream (); 266 bos1.write("-----BEGIN CERTIFICATE REQUEST-----\n".getBytes()); 267 bos1.write(Base64.encode(bOut.toByteArray())); 268 bos1.write("\n-----END CERTIFICATE REQUEST-----\n".getBytes()); 269 bos1.close(); 270 System.out.println("CertificationRequest generated:"); 271 System.out.println(new String (bos1.toByteArray())); 272 273 System.out.println("Trying to send request..."); 275 276 HttpGetCert getter = new HttpGetCert(); 277 getter.sendHttpReq("http://127.0.0.1:8080/apply/certreq", new String (bos1.toByteArray()), 278 "foo", "foo123"); 279 } 280 } 281 282 283 | Popular Tags |