type=page
status=published
title=Managing Administrative Security
next=running-in-secure-environment.html
prev=security-in-cluster-mode.html
~~~~~~
Managing Administrative Security
================================

[[GSSCG00039]][[gknqh]]


[[managing-administrative-security]]
5 Managing Administrative Security
----------------------------------

This chapter describes how to manage administrative security by using
the secure administration feature.

This chapter assumes that you are familiar with security features such
as authentication, authorization, and certificates. If you are not,
first see link:system-security.html#ablnk[Administering System Security].

Instructions for accomplishing the tasks specific to GlassFish Server by
using the Administration Console are contained in the Administration
Console online help.

* link:#gkocp[Secure Administration Overview]
* link:#gkofl[How Secure Admin Works: The Big Picture]
* link:#gkofe[Considerations When Running GlassFish Server With Default
Security]
* link:#gkomz[Running Secure Admin]
* link:#gkolu[Additional Considerations When Creating Local Instances]
* link:#gkqah[Secure Admin Use Case]
* link:#gkodn[Upgrading an SSL-Enabled Secure GlassFish Installation to
Secure Admin]

[[gkocp]][[GSSCG00162]][[secure-administration-overview]]

Secure Administration Overview
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The secure administration feature allows an administrator to secure all
administrative communication between the domain administration server
(DAS), any remote instances, and administration clients such as the
`asadmin` utility, the administration console, and REST clients.

In addition, secure administration helps to prevent DAS-to-DAS and
instance-to-instance traffic, and carefully restricts
administration-client-to-instance traffic.

The secure administration feature, which is henceforth referred to as
secure admin, provides a secure environment, in which you can be
confident that rogue users or processes cannot intercept or corrupt
administration traffic or impersonate legitimate GlassFish Server
components.

When you install GlassFish Server or create a new domain, secure admin
is disabled by default. When secure admin is disabled, GlassFish Server
does not encrypt administrative communication among the system
components and does not accept administrative connections from remote
hosts.

The following subcommands enable and disable secure admin:

* enable-secure-admin-The `enable-secure-admin` subcommand turns on
secure admin. GlassFish Server uses SSL encryption to protect subsequent
administrative traffic and will accept remote administrative
connections. Enabling secure admin affects the entire domain, including
the DAS and all instances. The DAS must be running, and not any
instances, when you run `enable-secure-admin`. You must restart the DAS
immediately after enabling secure admin, and then start any instances
you want to run. +

[NOTE]
=======================================================================

The `enable-secure-admin` subcommand fails if any administrative user
has a blank password.

=======================================================================

* disable-secure-admin-The `disable-secure-admin` subcommand turns off
secure admin. GlassFish Server no longer encrypts administrative
messages and will no longer accept remote administration connections.
Disabling secure admin affects the entire domain, including the DAS and
all instances. The DAS must be running , and not any instances, when you
run `disable-secure-admin`. You must restart the DAS immediately after
disabling secure admin, and then start any instances you want to run. +
If secure admin is not enabled, this subcommand has no effect.

This section describes how to use these commands to run secure admin,
and the implications of doing so.

[[gkofl]][[GSSCG00163]][[how-secure-admin-works-the-big-picture]]

How Secure Admin Works: The Big Picture
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Secure admin is a domain-wide setting. It affects the DAS and all
instances and all administration clients. This section describes the
following topics:

* link:#gkqce[Functions Performed by Secure Admin]
* link:#gkocv[Which Administration Account is Used?]
* link:#gkodi[What Authentication Methods Are Used for Secure
Administration?]
* link:#gkpex[Understanding How Certificate Authentication is Performed]
* link:#gkoey[What Certificates Are Used?]
* link:#glgmy[An Alternate Approach: Using Distinguished Names to
Specify Certificates]
* link:#gkqjj[Guarding Against Unwanted Connections]

[[gkqce]][[GSSCG00227]][[functions-performed-by-secure-admin]]

Functions Performed by Secure Admin
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

The `enable-secure-admin` subcommand performs the following functions.
Subsequent sections describe these functions in more detail.

* Enables the secure admin behavior, optionally setting which aliases
are to be used for identifying the DAS and instance certificates.
* Adjusts all configurations in the domain, including default-config.
* Adjusts Grizzly settings:

** SSL/TLS is enabled in the DAS's admin listener and the instances'
admin listeners.

** Port unification (that is, HTTP and HTTPS are handled by the same
port), http—to—https redirection, and client authentication
(client-auth=want) are enabled.

** Configures SSL to use the administration truststore.

** Configures SSL to use the administration keystore and the correct
alias (for the self-signed cert) for authenticating itself. (You can use
your own certificate instead, as described in link:#gkped[Using Your Own
Certificates]. +
The Grizzly configuration on the DAS and each instance is identical,
with the exception that the DAS uses the `s1as` alias for SSL/TLS
authentication and the instances use the `glassfish-instance` alias.
(These alias names are the default, and you can change them.) +
A server restart is required to change the Grizzly adapter behavior. +
The restart also synchronizes the restarted instances. When you start
the instances, the DAS delivers the updated configuration to the
instances.

[[gkocv]][[GSSCG00228]][[which-administration-account-is-used]]

Which Administration Account is Used?
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

If only one administration account exists in the realm, GlassFish Server
treats that account as the current default administration account. In
this case, when you run an `asadmin` command, you do not need to specify
the username. If a password for that username is required, you need to
specify it, typically by using the `--passwordfile` option or by letting
`asadmin` prompt you for it.

By default, GlassFish Server includes a single account for user "admin"
and an empty password. Therefore, if you make no other changes before
you enable secure admin, "admin" is the initial default username and no
password is required. You need to decide whether enabling secure admin
without also requiring a password makes sense in your environment.

If multiple admin accounts exist, then GlassFish Server does not
recognize any admin username as the default. You must then specify a
valid username via the `-—user` option when you use the `asadmin`
command (or by or defining the `AS_ASDMIN_USER` environment variable),
and its associated password (if the associated password is not empty).

The username and password used for a login attempt must match the
username and password (if required) for an account defined in the realm,
and you must have set up the account as a member of the admin group.

[[gkodi]][[GSSCG00229]][[what-authentication-methods-are-used-for-secure-administration]]

What Authentication Methods Are Used for Secure Administration?
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

The secure admin feature enforces security via the following
authentication methods:

* The DAS and instances authenticate to each other via mutual (two-way)
SSL/TLS certificate authentication. The DAS authenticates to clients via
one-way SSL/TLS certificate authentication. +
The domain creation process creates a default keystore and truststore,
plus a default private key for the DAS. Secure admin uses this initial
configuration to set up the truststore so that the DAS and instances
always trust each other.
* Remote administration clients (`asadmin`, administration console,
browsers, and IDEs) must accept the public certificate presented by the
DAS. If accepted, remote administration clients then send a user name
and password (HTTP Basic authentication) in the HTTP Authorization
header. The receiving DAS or instance makes sure those credentials are
valid in its realm, and authenticates and authorizes the user.
* A locally-running `asadmin` (that is, connecting to an instance on the
same host) authenticates and authorizes to the co-located instance using
a locally-provisioned password.
* Credentials or other sensitive information sent over the network are
always encrypted if secure admin is enabled. No credentials are sent in
the clear if secure admin is enabled. (If secure admin is disabled,
credentials are sent in the clear.) Messages between administration
clients and the DAS, between the DAS and remote instances, and between
local administration clients and instances are encrypted using SSL/TLS.
This is true even if you explicitly set the `asadmin` `-—secure` option
to false.

link:#gkobl[Table 5-1] shows which authentication methods are employed
when secure admin is enabled or disabled.

[[sthref35]][[gkobl]]

Table 5-1 Authentication Methods Employed

[width="100%",cols="30%,30%,40%",options="header",]
|=======================================================================
|Access Method |When Secure Admin is Disabled |When Secure Admin is
Enabled
|Remote administration access to the DAS |Rejected. |Username/password
authentication. (Client must also accept server certificate.)

|Communication between DAS and instances |Cleartext messages. No mutual
authentication. |SSL-encrypted messages. SSL mutual authentication using
certificates.

|Communication between administration clients and DAS |Cleartext
messages. No DAS authentication. |SSL-encrypted messages. DAS uses SSL
certificate server authentication.

|Local asadmin client to instance on same node |Cleartext messages.
Locally-provisioned password mechanism is used. |SSL-encrypted messages.
Locally-provisioned password mechanism is used.
|=======================================================================


[[gkpex]][[GSSCG00230]][[understanding-how-certificate-authentication-is-performed]]

Understanding How Certificate Authentication is Performed
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

The domain creation process creates a primary (private) key and a
self-signed certificate for the DAS, and a separate private key and
self-signed certificate for remote instances.

Then, when you enable secure admin, the following actions are performed:

* Both private keys are stored in the domain-wide DAS keystore file,
keystore.jks.
* Both public certificates are stored in the domain-wide DAS truststore
file, cacerts.jks.

When the DAS sends a message to an instance:

1.  SSL on the instance asks the DAS to provide an SSL/TLS certificate.
2.  The DAS sends the certificate with the alias you specified using the
`--adminalias` option when you ran the `enable-secure-admin` subcommand.
3.  SSL on the instance makes sure the certificate is valid and
GlassFish Server makes sure that the security Principal associated with
the incoming request (provided automatically by Grizzly and the SSL/TLS
Java implementation) matches the Principal associated with the
adminalias from the instance's truststore.

[[gkoey]][[GSSCG00231]][[what-certificates-are-used]]

What Certificates Are Used?
^^^^^^^^^^^^^^^^^^^^^^^^^^^

When you enable secure admin, you can optionally set the `--adminalias`
and `--instancealias` options that tell secure admin which aliases to
use for the DAS and instance certificates.

The DAS uses the alias associated with the `--instancealias` option to
check incoming requests that use SSL/TLS cert authentication.
Conversely, instances use the alias associated with the `--adminalias`
option to check incoming requests with certificate authentication.

By default, `--adminalias` of the `enable-secure-admin` subcommand uses
the `s1as` alias, and the `--instancealias` option uses the
`glassfish-instance` alias, both of which identify the default
self-signed certificates.

You can use your tool of choice, such as keytool, to list the default
self-signed certificates in the keystore, similar to the following:


[NOTE]
=======================================================================

You can list the contents of the keystore without supplying a password.
However, for a request that affects the private key, such as the
keytool.exe `--certreq` option, the keystore password is required. This
is the master password and has a default value of changeit unless you
change it with the `change-master-password` subcommand.

=======================================================================


`keytool.exe -list -keystore keystore.jks`

[source,oac_no_warn]
----
Enter keystore password:

*****************  WARNING WARNING WARNING  *****************
* The integrity of the information stored in your keystore  *
* has NOT been verified!  In order to verify its integrity, *
* you must provide your keystore password.                  *
*****************  WARNING WARNING WARNING  *****************

Keystore type: JKS
Keystore provider: SUN

Your keystore contains 2 entries

glassfish-instance, Jan 3, 2011, PrivateKeyEntry,
Certificate fingerprint (MD5): 06:A4:83:84:57:52:9C:2F:E1:FD:08:68:BB:2D:ED:E8
s1as, Jan 3, 2011, PrivateKeyEntry,
Certificate fingerprint (MD5): 8B:7D:5A:4A:32:36:1B:5D:6A:29:66:01:B0:A3:CB:85
----

The `--adminalias` and `--instancealias` values are maintained. Because
of this design, normal instance creation operations (create-instance
over SSH and create-local-instance) apply the up-to-date keystore,
truststore, and configuration to each instance.

[[gkpfi]][[GSSCG00201]][[self-signed-certificates-and-trust]]

Self-Signed Certificates and Trust
++++++++++++++++++++++++++++++++++

The self-signed certificates that GlassFish Server uses might not be
trusted by clients by default because a certificate authority does not
vouch for the authenticity of the certificate. If you enable secure
admin and then contact the DAS using an administration client, that
client will detect whether the certificate is automatically trusted.

Browsers will warn you, let you view the certificate, and ask you to
reject the certificate, accept it once, or accept it indefinitely, as
shown in link:#gkqpv[Figure 5-1].

[[GSSCG00002]][[gkqpv]]


.*Figure 5-1 Sample Browser Response to Untrusted Certificate*
image:img/accept-certif.png[
"This screen shot shows how a browser might respond to an untrusted
certificate."]


Similarly, the first time `asadmin` receives an untrusted certificate,
it displays the certificate and lets you accept it or reject it, as
follows: (If you accept it, `asadmin` also accepts that certificate in
the future. )

[source,oac_no_warn]
----
D:\glassfish6\glassfish\bin>asadmin enable-secure-admin
Command enable-secure-admin executed successfully.


D:\glassfish6\glassfish\bin>asadmin stop-domain domain1
Waiting for the domain to stop .......
Command stop-domain executed successfully.

D:\glassfish6\glassfish\bin>asadmin start-domain domain1
Waiting for domain1 to start ..............................
Successfully started the domain : domain1
domain  Location: D:\glassfish6\glassfish\domains\domain1
Log File: D:\glassfish6\glassfish\domains\domain1\logs\server.log
Admin Port: 4848
Command start-domain executed successfully.

D:\glassfish6\glassfish\bin>asadmin list-domains
[
[
  Version: V3
  Subject: CN=machine.oracle.com, OU=GlassFish, O=Oracle Corporation, L=San
ta Clara, ST=California, C=US
  Signature Algorithm: SHA1withRSA, OID = 1.2.840.113549.1.1.5

  Key:  Sun RSA public key, 1024 bits
  modulus: 916043595073784449632358756374297330881618062298549101072702252458856
74079656358328568800001548507219262910864311924824938195045822088563459253216383
21100660819657204757523896415606833471499564071226722478056407102318862796797465
6245090519956376357288295037519504394674686082145398885236913866246525691704749
  public exponent: 65537
  Validity: [From: Tue Jan 04 14:30:08 EST 2011,
               To: Fri Jan 01 14:30:08 EST 2021]
  Issuer: CN=machine.oracle.com, OU=GlassFish, O=Oracle Corporation, L=Sant
a Clara, ST=California, C=US
  SerialNumber: [    4d237540]

Certificate Extensions: 1
[1]: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: AF 8B 90 1E 51 9A 80 1B   EB A4 D9 C6 01 8A A0 FD  ....Q...........
0010: DE EC 83 8A                                        ....
]
]

]
  Algorithm: [SHA1withRSA]
  Signature:
0000: 3F 2B 30 CE 97 0B 5E F3   72 0E 60 18 8D 3B 04 DC  ?+0...^.r.`..;..
0010: 26 E6 7A 6F D0 19 CC 26   1D 90 C0 DE 33 4E 53 FB  &.zo...&....3NS.
0020: DC E7 AE 78 9E BA EF 14   86 57 36 D4 3E 9B C9 FB  ...x.....W6.>...
0030: C0 B4 EF 72 27 D9 4F 79   1F 89 91 B8 96 26 33 64  ...r'.Oy.....&3d
0040: 9F 4B 04 4B 83 B9 BF 4D   54 B4 8F 75 17 1A 51 BD  .K.K...MT..u..Q.
0050: F3 69 94 CE 90 95 08 55   2C 07 D2 23 AC AE EC 6D  .i.....U,..#...m
0060: 84 B6 3D 00 FB FE 92 50   37 1A 2D 00 F1 21 5C E6  ..=....P7.-..!\.
0070: 1F 39 26 B2 5D C1 FD C8   B1 4F CC EE 26 84 B8 B5  .9&.]....O..&...

]
Do you trust the above certificate [y|N] -->
----

`asadmin` saves certificates you accept in the file `.asadmintruststore`
in your log-in default directory. You do not generally need to work with
the file directly, but if you delete or move the file, `asadmin` will
prompt you again when it receives untrusted certificates.

Some `asadmin` commands such as run-script can contact an instance
directly to retrieve information (but not to make configuration
changes). The instances do not use the same certificate as the DAS, so
in these cases `asadmin` then prompts you to accept or reject the
instance certificate.

[[gkped]][[GSSCG00202]][[using-your-own-certificates]]

Using Your Own Certificates
+++++++++++++++++++++++++++

By default, `--adminalias` of the `enable-secure-admin` subcommand uses
the `s1as` alias, and the `--instancealias` option uses the
`glassfish-instance` alias, both of which identify the default
self-signed certificates.

You can instead have GlassFish Server use your own certificates for this
purpose by first adding your certificates to the keystore and
truststore, and then running `enable-secure-admin` and specifying the
aliases for your certificates.

It is also possible to use `s1as` and `glassfish-instance` as the alias
names for your own certificates. A benefit of doing so is that you would
not have to specify alias names with the `enable-secure-admin`
subcommand.

In addition, your own certificate identified by the `s1as` alias would
be used in all other cases within the domain where the `s1as` alias is
used (by default), such as in the SSL configuration of the IIOP and
http-listener-2 listeners, and as the `encryption.key.alias` and
`signature.key.alias` used for provider configuration in the SOAP
authentication layer for Message Security configuration.

You may find the wide-reaching effect of using the `s1as` alias with
your own certificate to be either a useful feature or an unintended
consequence. Therefore, you should understand the implications of using
the `s1as` alias before doing so.

If you decide to use the `s1as` and `glassfish-instance` aliases with
your own certificates, you will first need to disable secure admin (if
enabled) and then change or delete the exiting `s1as` alias from both
the `keystore.jks` keystore and `cacerts.jks` truststore for the DAS.
You can use the `--changealias` or`--delete` option of `keytool` to
accomplish this. Then, import your own certificates.

When you enable secure admin, the DAS and the instances then have copies
of the same keystore and truststore

[[glgmy]][[GSSCG00232]][[an-alternate-approach-using-distinguished-names-to-specify-certificates]]

An Alternate Approach: Using Distinguished Names to Specify Certificates
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

By default, the DAS uses the alias associated with the `--instancealias`
option to check incoming requests that use SSL/TLS cert authentication.
Conversely, instances use the alias associated with the `--adminalias`
option to check incoming requests with certificate authentication.

The link:../reference-manual/enable-secure-admin-principal.html#GSRFM00131[`enable-secure-admin-principal`] subcommand
provides an alternate approach. `enable-secure-admin-principal`
instructs GlassFish Server to accept admin requests when accompanied by
an SSL certificate with the specified distinguished name (DN).


[NOTE]
=======================================================================

Any certificate you specify with `enable-secure-admin-principal` must
either be issued by a trusted certificate authority or, if it is
self-signed, must already be in the GlassFish Server truststore.

=======================================================================


For example, assume that you write your own admin client that uses the
REST interface. When your client establishes the connection, it can
choose which certificate to use for its client cert. You would then
specify the DN of this certificate to `enable-secure-admin-principal`.

You must specify either the DN or the `--alias` option of the
`enable-secure-admin-principal` subcommand.

If you specify the DN, GlassFish Server records the value you specify as
the DN. You specify the DN as a comma-separated list in quotes. For
example,
`"CN=system.amer.oracle.com,OU=GlassFish,O=Oracle Corporation,L=Santa Clara,ST=California,C=US"`.


[NOTE]
=======================================================================

The `enable-secure-admin-principal` subcommand accepts the string you
enter and does not immediately validate it. However, secure admin must
be able to match the DN you specify in order to use it.

=======================================================================


If you have sufficient privileges to view the content of the keystore,
you can use keytool to display the DN of a certificate:

[source,oac_no_warn]
----
keytool.exe -v -list -keystore keystore.jks
Enter keystore password:

Keystore type: JKS
Keystore provider: SUN

Your keystore contains 2 entries

Alias name: glassfish-instance
Creation date: Jul 7, 2011
Entry type: PrivateKeyEntry
Certificate chain length: 1
Certificate[1]:
Owner: CN=systemname.amer.oracle.com-instance, OU=GlassFish, 
O=Oracle Corporation, L=Santa Clara, ST=California, C=US
Issuer: CN=systemname.amer.oracle.com-instance, OU=GlassFish, O=Oracle Corporation,
 L=Santa Clara, ST=California, C=US
Serial number: 4e15d6e7
Valid from: Thu Jul 07 11:55:19 EDT 2011 until: Sun Jul 04 11:55:19 EDT 2021
Certificate fingerprints:
         MD5:  05:6E:01:D6:CE:9D:29:DA:55:D9:10:5E:BE:CC:55:05
         SHA1: 2A:6D:A2:52:A5:2B:ED:DE:CD:B4:76:4A:65:9D:B5:79:A6:EA:3C:10
         Signature algorithm name: SHA1withRSA
         Version: 3

Extensions:

#1: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: 96 99 36 B6 CF 60 1E 8A   AE 25 75 4E C8 34 AA AB  ..6..`...%uN.4..
0010: E1 3B CF 03                                        .;..
]
]
----

If you use the "`--alias` aliasname" form, then GlassFish Server looks
in its truststore for a certificate with the specified alias and uses
the DN associated with that certificate. alias-name must be an alias
associated with a certificate currently in the truststore. Therefore,
you may find it most useful for self-signed certificates for which you
know the alias.

If you have sufficient privileges to view the contents of the
truststore, you can use keytool to display the alias of a certificate:

[source,oac_no_warn]
----
keytool.exe -v -list -keystore cacerts.jks
Enter keystore password:
:
:
Alias name: glassfish-instance
Creation date: Jul 7, 2011
Entry type: trustedCertEntry

Owner: CN=systemname.amer.oracle.com-instance, OU=GlassFish, O=Oracle Corporation,
L=Santa Clara, ST=California, C=US
Issuer: CN=systemname.amer.oracle.com-instance, OU=GlassFish, O=Oracle Corporation,
 L=Santa Clara, ST=California, C=US
Serial number: 4e15d6e7
Valid from: Thu Jul 07 11:55:19 EDT 2011 until: Sun Jul 04 11:55:19 EDT 2021
Certificate fingerprints:
         MD5:  05:6E:01:D6:CE:9D:29:DA:55:D9:10:5E:BE:CC:55:05
         SHA1: 2A:6D:A2:52:A5:2B:ED:DE:CD:B4:76:4A:65:9D:B5:79:A6:EA:3C:10
         Signature algorithm name: SHA1withRSA
         Version: 3

Extensions:

#1: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: 96 99 36 B6 CF 60 1E 8A   AE 25 75 4E C8 34 AA AB  ..6..`...%uN.4..
0010: E1 3B CF 03                                        .;..
]
]
----

When you run `enable-secure-admin`, GlassFish Server automatically
records the DNs for the admin alias and the instance alias, whether you
specify those values or use the defaults. You do not need to run
`enable-secure-admin-principal` yourself for those certificates.

Other than these certificates, you must run
`enable-secure-admin-principal` for any other DN that GlassFish Server
should authorize to send admin requests. This includes DNs corresponding
to trusted certificates (those with a certificate chain to a trusted
authority.)

You can run `enable-secure-admin-principal` multiple times so that
GlassFish Server accepts admin requests from a client sending a
certificate with any of the DNs you specify.

The following example shows how to specify a DN for authorizing access
in secure administration:

[source,oac_no_warn]
----
asadmin> enable-secure-admin-principal
"CN=system.amer.oracle.com,OU=GlassFish,
O=Oracle Corporation,L=Santa Clara,ST=California,C=US"

Command enable-secure-admin-principal executed successfully.
----

You can use the link:../reference-manual/disable-secure-admin-principal.html#GSRFM00123[`disable-secure-admin-principal`]
subcommand to disable a specific certificate for authenticating and
authorizing access in secure admin. You must specify either the DN or
the `--alias` option of the `disable-secure-admin-principal` subcommand.
To disable multiple certificates for authenticating and authorizing
access in secure admin, run the `disable-secure-admin-principal`
subcommand multiple times.

You can use the link:../reference-manual/list-secure-admin-principals.html#GSRFM00200[`list-secure-admin-principals`]
subcommand to list the certificates for which GlassFish Server accepts
admin requests from clients.

[[gkqjj]][[GSSCG00233]][[guarding-against-unwanted-connections]]

Guarding Against Unwanted Connections
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Secure admin guards against unwanted connections in several ways:

* DAS-to-DAS, instance-to-instance:

** The DAS and the instances have copies of the same truststore, which
contains the public certificate of the DAS and the separate public
certificate that is used by all instances. In addition, GlassFish Server
includes a unique, generated "domain ID" that servers use to ensure that
admin requests from other GlassFish Servers originate from the correct
domain.

** DAS-to-other-DAS communication is not authenticated because each
different DAS will have its own self-signed certificate that is not in
the truststore of the other DAS.

** DAS-to-itself communication is unlikely unless you were to
misconfigure the admin listener port for an instance on the same host so
it is the same as for the DAS. Similarly, instance-to-instance traffic
is unlikely unless you were to misconfigure listener ports for instances
on the same host. +
To prevent both of these situations, both cases are handled by making
sure that the connecting Principal (alias) is not the running Principal.
secure admin ensures that if the client has authenticated using SSL/TLS
client authentication that the Principal associated with the remote
client is not the same as the current process. That is, the DAS makes
sure that the Principal is not itself. Similarly, each instance ensures
that the client is not an instance. (The instances share the same
self-signed certificate and therefore are mapped to the same Principal.)
* Remote client-to-instance: +
Remote `asadmin` clients are unable to connect directly to instances. If
the user on host "test1" runs a local command but specifies a remote
instance on host "test2," `asadmin` on test1 will read and send that
locally-provisioned password. The instance on "test2" will have a
different locally-provisioned password and so the authentication attempt
will fail. +
Therefore, a user on "test1" will not be able to run a remote command
targeting an instance on "test2."

[[gkofe]][[GSSCG00164]][[considerations-when-running-glassfish-server-with-default-security]]

Considerations When Running GlassFish Server With Default Security
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

In GlassFish Server, the default admin account is username "admin" with
an empty password. Admin clients provide empty credentials or none at
all, and all are authenticated and authorized as that default admin
user. None of the participants (clients, DAS, or instances) encrypts
network messages.

If this level of security is acceptable in your environment, no changes
are needed and you do not need to enable secure administration. Imposing
a heightened level of security is optional.

However, consider link:#gkode[Table 5-2], which shows which operations
are accepted and rejected when secure admin is disabled.


[NOTE]
=======================================================================

When secure admin is disabled, GlassFish Server does allow remote
monitoring (read-only) access via the REST interface.

=======================================================================


[[sthref37]][[gkode]]

Table 5-2 Accepted and Rejected Operations if Secure Admin is Disabled

[width="100%",cols="30%,25%,45%",options="header",]
|=======================================================================
|Operation |Run From Same System as DAS |Run From Remote System
|`start-local-instance` |Functions as expected |Cannot sync with DAS.
The instance starts but cannot communicate with the DAS. DAS will not
see the instance.

|Any other `asadmin` subcommand |Functions as expected |Rejected. A user
sees the username/password prompt, but even correct entries are
rejected.

|Commands that use SSH. For example, `create-instance`. |Functions as
expected; requires prior SSH configuration. |Functions as expected;
requires prior SSH configuration.
|=======================================================================


[[gkomz]][[GSSCG00165]][[running-secure-admin]]

Running Secure Admin
~~~~~~~~~~~~~~~~~~~~

This section describes how to run secure admin. The section begins with
prerequisites for running secure admin.

[[gkokc]][[GSSCG00234]][[prerequisites-for-running-secure-admin]]

Prerequisites for Running Secure Admin
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Before running GlassFish Server with secure admin enabled, you must make
sure that:

1.  The DAS is installed, initialized, and running.
2.  If one or more remote instances are installed and initialized, they
must not be running.
3.  Any administration clients you require are installed.
4.  The DAS communicates on the `-—adminport` you configure when you
create the domain, and defaults to 4848. An instance communicates on the
`ASADMIN_LISTENER_PORT` system property you specify for the instance.
5.  The user name and password sent by remote administration clients
(`asadmin`, administration console, browsers, and IDEs) must exist in
the realm and be in the admin group.
6.  The keystore and truststore for the domain exist. (They are created
by default when you create the domain or install GlassFish Server.) +
If you are not using the default self-signed certificates, you must add
your own valid certificates and CA root in the keystore and truststore,
respectively.
7.  If you are not using the default self-signed certificates, create
two aliases corresponding to certificates in the keystore and
truststore: one that the DAS will use for authenticating itself in
administration traffic, and one that the instances will use for
authenticating itself in administration traffic.

[[glgmh]][[GSSCG00235]][[an-alternate-approach-using-a-user-name-and-password-for-internal-authentication-and-authorization]]

An Alternate Approach: Using A User Name and Password for Internal
Authentication and Authorization
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

By default, secure admin uses the GlassFish Server self-signed
certificates, via the aliases corresponding to these certificates, to
authenticate the DAS and instances with each other and to authorize
secure admin operations. Specifically, the DAS uses the (`s1as`) alias
for authenticating itself and authorizing access in administration
traffic, and instances use the (`glassfish-instance`) alias for
authenticating themselves and authorizing access in secure admin
traffic.

As described in link:#gkped[Using Your Own Certificates], you can
instead use your own certificates and their associated aliases for
authenticating and authorizing the DAS and instances in administration
traffic.

As an alternative to this certificate-based authentication and
authorization, you can instead use the
link:../reference-manual/enable-secure-admin-internal-user.html#GSRFM00130[`enable-secure-admin-internal-user`] subcommand to
instruct all servers in the domain to authenticate to each other, and to
authorize admin operations submitted to each other, using an existing
admin user name and password rather than SSL certificates.


[NOTE]
=======================================================================

If secure admin is enabled, all GlassFish Server processes continue to
use SSL encryption to secure the content of the admin messages,
regardless of how they authenticate to each other.

=======================================================================


You might want to use the
link:../reference-manual/enable-secure-admin-internal-user.html#GSRFM00130[`enable-secure-admin-internal-user`] subcommand if your
use case favors the use of a user name and password combination over the
use of SSL certificates and aliases.

This generally means that you must:

1.  Create a valid admin user. +
[source,oac_no_warn]
----
asadmin> create-file-user --authrealmname admin-realm --groups 
asadmin newAdminUsername
----
2.  Create a password alias for the just-created password. +
[source,oac_no_warn]
----
asadmin> create-password-alias passwordAliasName
----
3.  Use that user name and password for inter-process authentication and
admin authorization. +
[source,oac_no_warn]
----
asadmin> enable-secure-admin-internal-user 
--passwordalias passwordAliasName
newAdminUsername
----

The following example allows secure admin to use a user name and
password alias for authentication and authorization between the DAS and
instances, instead of certificates.

[source,oac_no_warn]
----
asadmin> enable-secure-admin-internal-user 
--passwordalias passwordAliasName
newAdminUsername
----

If GlassFish Server finds at least one secure admin internal user, then
if secure admin is enabled GlassFish Server processes will not use SSL
authentication and authorization with each other and will instead use
user name password pairs.

Most users who use this subcommand will need to set up only one secure
admin internal user. If you set up more than one secure admin internal
user, you should not make any assumptions about which user name and
password pair GlassFish Server will choose to use for any given admin
request.

As a general practice, you should not use the same user name and
password pair for internal admin communication and for admin user login.
That is, create at least one admin account specifically for internal
admin communication.

You can use the link:../reference-manual/disable-secure-admin-internal-user.html#GSRFM00122[`disable-secure-admin-internal-user`]
subcommand to disable secure admin from using the user name (instead of
SSL certificates) to authenticate the DAS and instances with each other
and to authorize admin operations. To disable multiple user names for
authenticating and authorizing access in secure admin, run the
`disable-secure-admin-internal-user` subcommand multiple times.

You can use the link:../reference-manual/list-secure-admin-internal-users.html#GSRFM00199[`list-secure-admin-internal-users`]
subcommand to list the user names for which GlassFish Server
authenticate the DAS and instances with each other and authorizes admin
operations.

[[gkqby]][[GSSCG00236]][[example-of-running-enable-secure-admin]]

Example of Running enable-secure-admin
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

The following example shows how to enable secure admin for a domain
using the default admin alias and the default instance alias. You must
restart the DAS immediately after enabling secure admin.


[NOTE]
=======================================================================

The only indicator that secure admin is enabled is the successful status
from the `enable-secure-admin` subcommand. When secure admin is running,
the DAS and instances do not report the secure admin status.

=======================================================================


`asadmin>` `enable-secure-admin`

`Command enable-secure-admin executed successfully.`

The following example shows how to enable secure admin for a domain
using an admin alias adtest and an instance alias intest. You can also
use this command to modify an existing secure admin configuration to use
different aliases.

`asadmin>`
`enable-secure-admin --adminalias adtest --instancealias intest`

The following example shows how to disable secure admin:

`asadmin>` `disable-secure-admin`

`Command disable-secure-admin executed successfully.`

You can use the following command to see the current state of secure
admin in a domain:

`asadmin>` `get secure-admin.enabled`

`secure-admin.enabled=false`

`Command get executed successfully.`

[[gkolu]][[GSSCG00166]][[additional-considerations-when-creating-local-instances]]

Additional Considerations When Creating Local Instances
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

If you use `xxx-local-instance` commands to set up local instances,
either leave secure admin disabled, or enable it before you create or
start the instances and leave it that way.

However, if you use `xxx-instance` commands over SSH to manage remote
instances, you can enable and disable secure admin, although this is not
recommended because it can result in an inconsistent security model.

[[gkqah]][[GSSCG00167]][[secure-admin-use-case]]

Secure Admin Use Case
~~~~~~~~~~~~~~~~~~~~~

This section describes a simple secure admin use case.

In the
`asadmin --secure=false --user me --passwordfile myFile.txt cmd ...` use
case, the user submits a command with `--secure` set to false, and
supplies password credentials.

The important concept to note is that `asadmin` uses HTTPS because of
the DAS redirection, even though the command sets `--secure` to false.
`asadmin` sends the HTTP Authorization header along with the redirected
request.

In addition to the flow described here, certificate authentication is
also performed as described in link:#gkqax[Table 5-3]. Also, the
credentials that the user supplies are assumed to be valid administrator
credentials for the DAS.

[[sthref38]][[gkqax]]

Table 5-3 asadmin --secure=false, With Username and Password

[width="100%",cols="34%,33%,33%",options="header",]
|=======================================================================
|asadmin |Grizzly |AdminAdapter
|Sends HTTP request, no authorization header (because the transport is
not secure). | + | +

| + |Returns 3xx status and redirects HTTP to HTTPS. | +

|Follows redirection, this time adding the Authorization header (because
transport is now HTTPS). | + | +

| + | + |Authenticates admin user and password from HTTP Authorization
header in the realm Executes command, and responds with success status.
|=======================================================================


[[gkodn]][[GSSCG00168]][[upgrading-an-ssl-enabled-secure-glassfish-installation-to-secure-admin]]

Upgrading an SSL-Enabled Secure GlassFish Installation to Secure Admin
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

If you enable secure admin on an SSL-enabled GlassFish Server
installation, secure admin uses the existing <ssl cert-nickname> value
as the DAS adminalias for secure admin.


