diff --git a/doc/conf/hosts b/doc/conf/hosts new file mode 100644 index 00000000..ff50e621 --- /dev/null +++ b/doc/conf/hosts @@ -0,0 +1,25 @@ +# Copyright (c) 1993-2009 Microsoft Corp. +# +# This is a sample HOSTS file used by Microsoft TCP/IP for Windows. +# +# This file contains the mappings of IP addresses to host names. Each +# entry should be kept on an individual line. The IP address should +# be placed in the first column followed by the corresponding host name. +# The IP address and the host name should be separated by at least one +# space. +# +# Additionally, comments (such as these) may be inserted on individual +# lines or following the machine name denoted by a '#' symbol. +# +# For example: +# +# 102.54.94.97 rhino.acme.com # source server +# 38.25.63.10 x.acme.com # x client host + +# localhost name resolution is handled within DNS itself. +127.0.0.1 localhost +::1 localhost + +# 개발 repository server +211.119.124.110 xit.xit-git.com +211.119.124.110 xit.xit-nexus.com diff --git a/doc/conf/settings.xml b/doc/conf/settings.xml new file mode 100644 index 00000000..14ae5c7b --- /dev/null +++ b/doc/conf/settings.xml @@ -0,0 +1,99 @@ + + + + C:/repo + + + maven-snapshot + xit-repo-user + xituser!@ + + + maven-release + xit-repo-user + xituser!@ + + + maven-3rdparty + xit-repo-user + xituser!@ + + + + + + + + + + + + + + nexus + + + + + + + + + nexus + + + \ No newline at end of file diff --git a/pom.xml b/pom.xml index d89617f8..ef8ba247 100644 --- a/pom.xml +++ b/pom.xml @@ -5,9 +5,8 @@ xit fims war - 1.0.0 + 1.0.0-SNAPSHOT fims - http://www.xit.co.kr @@ -55,85 +54,16 @@ false + - local-repository - file://${project.basedir}/repo - - + - - org.thymeleaf - thymeleaf - 3.0.15.RELEASE - - - org.thymeleaf - thymeleaf-spring5 - 3.0.15.RELEASE - - - nz.net.ultraq.thymeleaf - thymeleaf-layout-dialect - 3.1.0 - - - - - - - - egovframework.rte egovframework.rte.fdl.logging @@ -278,6 +208,22 @@ + + org.thymeleaf + thymeleaf + 3.0.15.RELEASE + + + org.thymeleaf + thymeleaf-spring5 + 3.0.15.RELEASE + + + nz.net.ultraq.thymeleaf + thymeleaf-layout-dialect + 3.1.0 + + javax.servlet servlet-api @@ -735,7 +681,6 @@ - + org.apache.maven.plugins @@ -1000,71 +942,30 @@ - - ${basedir}/target/site - - - org.apache.maven.plugins - maven-project-info-reports-plugin - 2.7 - - - sunlink - - javadoc - - true - - - http://docs.oracle.com/javase/6/docs/api/ - - - - - - - - org.codehaus.mojo - emma-maven-plugin - true - - - org.codehaus.mojo - surefire-report-maven-plugin - true - - - - report-only - - - - - - - org.apache.maven.plugins - maven-javadoc-plugin - - 128m - 512m - ${encoding} - ${encoding} - ${encoding} - - - - - org.apache.maven.plugins - maven-jxr-plugin - - ${encoding} - ${encoding} - true - apidocs - - - - + + + + + maven-snapshot + + http://xit.xit-nexus.com:8081/repository/maven-snapshots/ + + true + always + + + false + + + + + maven-release + http://xit.xit-nexus.com:8081/repository/maven-releases/ + + + + + @@ -1099,6 +1000,7 @@ false + diff --git a/repo/nl/captcha/simplecaptcha/1.2.1/simplecaptcha-1.2.1.jar b/repo/nl/captcha/simplecaptcha/1.2.1/simplecaptcha-1.2.1.jar deleted file mode 100644 index 9bba7cbe..00000000 Binary files a/repo/nl/captcha/simplecaptcha/1.2.1/simplecaptcha-1.2.1.jar and /dev/null differ diff --git a/src/main/java/kr/xit/framework/support/cert/InstallCert.java b/src/main/java/kr/xit/framework/support/cert/InstallCert.java new file mode 100644 index 00000000..e746234b --- /dev/null +++ b/src/main/java/kr/xit/framework/support/cert/InstallCert.java @@ -0,0 +1,216 @@ +package kr.xit.framework.support.cert;/* + * Copyright 2006 Sun Microsystems, Inc. All Rights Reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * - Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * - Neither the name of Sun Microsystems nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/** + * check out this {@link https://www.lesstif.com/pages/viewpage.action?pageId=12451848} + * + * Usage: + * + * 1. download source + * curl -O https://gist.githubusercontent.com/lesstif/cd26f57b7cfd2cd55241b20e05b5cd93/raw/InstallCert.java + * + * 2. compiling + * javac InstallCert.java + * + * 3. Run + * java -cp . InstallCert https://google.com:443 + * + * 4. save peer's ssl cert to keystore(name is jssecacerts) + * + * 5. extract cert from saved keystore + * keytool -exportcert -keystore jssecacerts -storepass changeit -file output.cert -alias letsencrypt + * + * 6. import cert into JDK's keystore + * keytool -importcert -keystore ${JAVA_HOME}/jre/lib/security/cacerts -storepass changeit -file output.cert -alias letsencrypt + * + */ + +/** + * http://blogs.sun.com/andreas/resource/InstallCert.java + * Use: + * java InstallCert hostname + * Example: + *% java InstallCert ecc.fedora.redhat.com + */ + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.OutputStream; +import java.security.KeyStore; +import java.security.MessageDigest; +import java.security.cert.CertificateException; +import java.security.cert.X509Certificate; + +import javax.net.ssl.SSLContext; +import javax.net.ssl.SSLException; +import javax.net.ssl.SSLSocket; +import javax.net.ssl.SSLSocketFactory; +import javax.net.ssl.TrustManager; +import javax.net.ssl.TrustManagerFactory; +import javax.net.ssl.X509TrustManager; +/** + * Class used to add the server's certificate to the KeyStore + * with your trusted certificates. + */ +public class InstallCert { + public static void main(String[] args) throws Exception { + String host; + int port; + char[] passphrase; + if ((args.length == 1) || (args.length == 2)) { + String[] c = args[0].split(":"); + host = c[0]; + port = (c.length == 1) ? 443 : Integer.parseInt(c[1]); + String p = (args.length == 1) ? "changeit" : args[1]; + passphrase = p.toCharArray(); + } else { + System.out.println("Usage: java InstallCert [:port] [passphrase]"); + return; + } + File file = new File("jssecacerts"); + if (file.isFile() == false) { + char SEP = File.separatorChar; + File dir = new File(System.getProperty("java.home") + SEP + + "lib" + SEP + "security"); + file = new File(dir, "jssecacerts"); + if (file.isFile() == false) { + file = new File(dir, "cacerts"); + } + } + System.out.println("Loading KeyStore " + file + "..."); + InputStream in = new FileInputStream(file); + KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType()); + ks.load(in, passphrase); + in.close(); + SSLContext context = SSLContext.getInstance("TLS"); + TrustManagerFactory tmf = + TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); + tmf.init(ks); + X509TrustManager defaultTrustManager = (X509TrustManager) tmf.getTrustManagers()[0]; + SavingTrustManager tm = new SavingTrustManager(defaultTrustManager); + context.init(null, new TrustManager[]{tm}, null); + SSLSocketFactory factory = context.getSocketFactory(); + System.out.println("Opening connection to " + host + ":" + port + "..."); + SSLSocket socket = (SSLSocket) factory.createSocket(host, port); + socket.setSoTimeout(10000); + try { + System.out.println("Starting SSL handshake..."); + socket.startHandshake(); + socket.close(); + System.out.println(); + System.out.println("No errors, certificate is already trusted"); + } catch (SSLException e) { + System.out.println(); + e.printStackTrace(System.out); + } + X509Certificate[] chain = tm.chain; + if (chain == null) { + System.out.println("Could not obtain server certificate chain"); + return; + } + BufferedReader reader = + new BufferedReader(new InputStreamReader(System.in)); + System.out.println(); + System.out.println("Server sent " + chain.length + " certificate(s):"); + System.out.println(); + MessageDigest sha1 = MessageDigest.getInstance("SHA1"); + MessageDigest md5 = MessageDigest.getInstance("MD5"); + for (int i = 0; i < chain.length; i++) { + X509Certificate cert = chain[i]; + System.out.println + (" " + (i + 1) + " Subject " + cert.getSubjectDN()); + System.out.println(" Issuer " + cert.getIssuerDN()); + sha1.update(cert.getEncoded()); + System.out.println(" sha1 " + toHexString(sha1.digest())); + md5.update(cert.getEncoded()); + System.out.println(" md5 " + toHexString(md5.digest())); + System.out.println(); + } + System.out.println("Enter certificate to add to trusted keystore or 'q' to quit: [1]"); + String line = reader.readLine().trim(); + int k; + try { + k = (line.length() == 0) ? 0 : Integer.parseInt(line) - 1; + } catch (NumberFormatException e) { + System.out.println("KeyStore not changed"); + return; + } + X509Certificate cert = chain[k]; + String alias = host + "-" + (k + 1); + ks.setCertificateEntry(alias, cert); + OutputStream out = new FileOutputStream("jssecacerts"); + ks.store(out, passphrase); + out.close(); + System.out.println(); + System.out.println(cert); + System.out.println(); + System.out.println + ("Added certificate to keystore 'jssecacerts' using alias '" + + alias + "'"); + } + private static final char[] HEXDIGITS = "0123456789abcdef".toCharArray(); + private static String toHexString(byte[] bytes) { + StringBuilder sb = new StringBuilder(bytes.length * 3); + for (int b : bytes) { + b &= 0xff; + sb.append(HEXDIGITS[b >> 4]); + sb.append(HEXDIGITS[b & 15]); + sb.append(' '); + } + return sb.toString(); + } + private static class SavingTrustManager implements X509TrustManager { + private final X509TrustManager tm; + private X509Certificate[] chain; + SavingTrustManager(X509TrustManager tm) { + this.tm = tm; + } + + @Override + public X509Certificate[] getAcceptedIssuers() { + return new X509Certificate[0]; + } + + public void checkClientTrusted(X509Certificate[] chain, String authType) + throws CertificateException { + throw new UnsupportedOperationException(); + } + public void checkServerTrusted(X509Certificate[] chain, String authType) + throws CertificateException { + this.chain = chain; + tm.checkServerTrusted(chain, authType); + } + } +}