Merge branch '1.6'

Conflicts:
        docs/src/main/latex/accumulo_user_manual/accumulo_user_manual.tex


Project: http://git-wip-us.apache.org/repos/asf/accumulo/repo
Commit: http://git-wip-us.apache.org/repos/asf/accumulo/commit/cd119099
Tree: http://git-wip-us.apache.org/repos/asf/accumulo/tree/cd119099
Diff: http://git-wip-us.apache.org/repos/asf/accumulo/diff/cd119099

Branch: refs/heads/master
Commit: cd11909951103679d9d20ec23aa7716035667e2c
Parents: 23ce1c7 dc58506
Author: Josh Elser <els...@apache.org>
Authored: Tue Jan 13 18:30:35 2015 -0500
Committer: Josh Elser <els...@apache.org>
Committed: Tue Jan 13 18:30:35 2015 -0500

----------------------------------------------------------------------
 .../main/asciidoc/accumulo_user_manual.asciidoc |   2 +
 docs/src/main/asciidoc/chapters/ssl.txt         | 134 +++++++++++++++++++
 2 files changed, 136 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/accumulo/blob/cd119099/docs/src/main/asciidoc/accumulo_user_manual.asciidoc
----------------------------------------------------------------------
diff --cc docs/src/main/asciidoc/accumulo_user_manual.asciidoc
index ec8e538,0000000..5884da2
mode 100644,000000..100644
--- a/docs/src/main/asciidoc/accumulo_user_manual.asciidoc
+++ b/docs/src/main/asciidoc/accumulo_user_manual.asciidoc
@@@ -1,64 -1,0 +1,66 @@@
 +// Licensed to the Apache Software Foundation (ASF) under one or more
 +// contributor license agreements.  See the NOTICE file distributed with
 +// this work for additional information regarding copyright ownership.
 +// The ASF licenses this file to You under the Apache License, Version 2.0
 +// (the "License"); you may not use this file except in compliance with
 +// the License.  You may obtain a copy of the License at
 +//
 +//     http://www.apache.org/licenses/LICENSE-2.0
 +//
 +// Unless required by applicable law or agreed to in writing, software
 +// distributed under the License is distributed on an "AS IS" BASIS,
 +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 +// See the License for the specific language governing permissions and
 +// limitations under the License.
 +
 +Apache Accumulo User Manual Version 1.6
 +=======================================
 +:author: Apache Accumulo Project
 +:email: d...@accumulo.apache.org
 +:toc2:
 +:toclevels: 4
 +:toc-title: Apache Accumulo 1.6
 +:numbered:
 +:website: http://accumulo.apache.org/
 +
 +image::accumulo-logo.png[]
 +
 +Copyright © 2011-2014 The Apache Software Foundation, Licensed under the 
Apache
 +License, Version 2.0.  Apache Accumulo, Accumulo, Apache, and the Apache
 +Accumulo project logo are trademarks of the Apache Software Foundation.
 +
 +include::chapters/introduction.txt[]
 +
 +include::chapters/design.txt[]
 +
 +include::chapters/shell.txt[]
 +
 +include::chapters/clients.txt[]
 +
 +include::chapters/development_clients.txt[]
 +
 +include::chapters/table_configuration.txt[]
 +
 +include::chapters/table_design.txt[]
 +
 +include::chapters/high_speed_ingest.txt[]
 +
 +include::chapters/analytics.txt[]
 +
 +include::chapters/security.txt[]
 +
 +include::chapters/replication.txt[]
 +
 +include::chapters/implementation.txt[]
 +
++include::chapters/ssl.txt[]
++
 +include::chapters/administration.txt[]
 +
 +include::chapters/multivolume.txt[]
 +
 +include::chapters/troubleshooting.txt[]
 +
 +[appendix]
 +include::appendices/config.txt[]
 +

http://git-wip-us.apache.org/repos/asf/accumulo/blob/cd119099/docs/src/main/asciidoc/chapters/ssl.txt
----------------------------------------------------------------------
diff --cc docs/src/main/asciidoc/chapters/ssl.txt
index 0000000,0000000..2abb98d
new file mode 100644
--- /dev/null
+++ b/docs/src/main/asciidoc/chapters/ssl.txt
@@@ -1,0 -1,0 +1,134 @@@
++// Licensed to the Apache Software Foundation (ASF) under one or more
++// contributor license agreements. See the NOTICE file distributed with
++// this work for additional information regarding copyright ownership.
++// The ASF licenses this file to You under the Apache License, Version 2.0
++// (the "License"); you may not use this file except in compliance with
++// the License. You may obtain a copy of the License at
++//
++//     http://www.apache.org/licenses/LICENSE-2.0
++//
++// Unless required by applicable law or agreed to in writing, software
++// distributed under the License is distributed on an "AS IS" BASIS,
++// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
++// See the License for the specific language governing permissions and
++// limitations under the License.
++
++== SSL
++Accumulo, through Thrift's TSSLTransport, provides the ability to encrypt
++wire communication between Accumulo servers and clients using secure
++sockets layer (SSL). SSL certifcates signed by the same certificate authority
++control the "circle of trust" in which a secure connection can be established.
++Typically, each host running Accumulo processes would be given a certificate
++which identifies itself.
++
++Clients can optionally also be given a certificate, when client-auth is 
enabled,
++which prevents unwanted clients from accessing the system. The SSL integration
++presently provides no authentication support within Accumulo (an Accumulo 
username
++and password are still required) and is only used to establish a means for
++secure communication.
++
++=== Server configuration
++
++As previously mentioned, the circle of trust is established by the certificate
++authority which created the certificates in use. Because of the tight coupling
++of certificate generation with an organization's policies, Accumulo does not
++provide a method in which to automatically create the necessary SSL 
components.
++
++Administrators without existing infrastructure built on SSL are encourage to
++use OpenSSL and the +keytool+ command. An example of these commands are
++included in a section below. Accumulo servers require a certificate and 
keystore,
++in the form of Java KeyStores, to enable SSL. The following configuration 
assumes
++these files already exist.
++
++In +$ACCUMULO_CONF_DIR/accumulo-site.xml+, the following properties are 
required:
++
++* *rpc.javax.net.ssl.keyStore*=_The path on the local filesystem to the 
keystore containing the server's certificate_
++* *rpc.javax.net.ssl.keyStorePassword*=_The password for the keystore 
containing the server's certificate_
++* *rpc.javax.net.ssl.trustStore*=_The path on the local filesystem to the 
keystore containing the certificate authority's public key_
++* *rpc.javax.net.ssl.trustStorePassword*=_The password for the keystore 
containing the certificate authority's public key_
++* *instance.rpc.ssl.enabled*=_true_
++
++Optionally, SSL client-authentication (two-way SSL) can also be enabled by 
setting
+++instance.rpc.ssl.clientAuth=true+ in +$ACCUMULO_CONF_DIR/accumulo-site.xml+.
++This requires that each client has access to  valid certificate to set up a 
secure connection
++to the servers. By default, Accumulo uses one-way SSL which does not require 
clients to have
++their own certificate.
++
++=== Client configuration
++
++To establish a connection to Accumulo servers, each client must also have
++special configuration. This is typically accomplished through the use of
++the client configuration file whose default location is +~/.accumulo/config+.
++
++The following properties must be set to connect to an Accumulo instance using 
SSL:
++
++* *rpc.javax.net.ssl.trustStore*=_The path on the local filesystem to the 
keystore containing the certificate authority's public key_
++* *rpc.javax.net.ssl.trustStorePassword*=_The password for the keystore 
containing the certificate authority's public key_
++* *instance.rpc.ssl.enabled*=_true_
++
++If two-way SSL if enabled (+instance.rpc.ssl.clientAuth=true+) for the 
instance, the client must also define
++their own certificate and enable client authenticate as well.
++
++* *rpc.javax.net.ssl.keyStore*=_The path on the local filesystem to the 
keystore containing the server's certificate_
++* *rpc.javax.net.ssl.keyStorePassword*=_The password for the keystore 
containing the server's certificate_
++* *instance.rpc.ssl.clientAuth*=_true_
++
++=== Generating SSL material using OpenSSL
++
++The following is included as an example for generating your own SSL material 
(certificate authority and server/client
++certificates) using OpenSSL and Java's KeyTool command.
++
++==== Generate a certificate authority
++
++----
++# Create a private key
++openssl genrsa -des3 -out root.key 4096
++
++# Create a certificate request using the private key
++openssl req -x509 -new -key root.key -days 365 -out root.pem
++
++# Generate a Base64-encoded version of the PEM just created
++openssl x509 -outform der -in root.pem -out root.der
++
++# Import the key into a Java KeyStore
++keytool -import -alias root-key -keystore truststore.jks -file root.der
++
++# Remove the DER formatted key file (as we don't need it anymore)
++rm root.der
++----
++
++The +truststore.jks+ file is the Java keystore which contains the certificate 
authority's public key.
++
++==== Generate a certificate/keystore per host
++
++It's common that each host in the instance is issued its own certificate 
(notably to ensure that revocation procedures
++can be easily followed). The following steps can be taken for each host.
++
++----
++# Create the private key for our server
++openssl genrsa -out server.key 4096
++
++# Generate a certificate signing request (CSR) with our private key
++openssl req -new -key server.key -out server.csr
++
++# Use the CSR and the CA to create a certificate for the server (a reply to 
the CSR)
++openssl x509 -req -in server.csr -CA root.pem -CAkey root.key -CAcreateserial 
\
++    -out server.crt -days 365
++
++# Use the certificate and the private key for our server to create PKCS12 file
++openssl pkcs12 -export -in server.crt -inkey server.key -certfile server.crt \
++    -name 'server-key' -out server.p12
++
++# Create a Java KeyStore for the server using the PKCS12 file (private key)
++keytool -importkeystore -srckeystore server.p12 -srcstoretype pkcs12 
-destkeystore \
++    server.jks -deststoretype JKS
++
++# Remove the PKCS12 file as we don't need it
++rm server.p12
++
++# Import the CA-signed certificate to the keystore
++keytool -import -trustcacerts -alias server-crt -file server.crt -keystore 
server.jks
++----
++
++The +server.jks+ file is the Java keystore containing the certificate for a 
given host. The above
++methods are equivalent whether the certficate is generate for an Accumulo 
server or a client.

Reply via email to