type=page
status=published
title=delete-ssl
next=delete-system-property.html
prev=delete-resource-ref.html
~~~~~~

= delete-ssl

[[delete-ssl-1]][[GSRFM00109]][[delete-ssl]]

== delete-ssl

Deletes the SSL element in the selected HTTP listener, IIOP listener, or
IIOP service

[[sthref975]]

=== Synopsis

[source]
----
asadmin [asadmin-options] delete-ssl [--help]
[--target target]
--type listener_or_service_type
listener_id
----

[[sthref976]]

=== Description

The `delete-ssl` subcommand deletes the SSL element in the selected HTTP
listener, IIOP listener, or IIOP service.

The listener_id is not required if the `--type` is `iiop-service`.

This subcommand is supported in remote mode only.

[[sthref977]]

=== Options

If an option has a short option name, then the short option precedes the
long option name. Short options have one dash whereas long options have
two dashes.

asadmin-options::
  Options for the `asadmin` utility. For information about these
  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
`--help`::
`-?`::
  Displays the help text for the subcommand.
`--target`::
  Specifies the target on which you are configuring the ssl element. The
  following values are valid:

  `server`;;
    Specifies the server in which the iiop-service or HTTP/IIOP listener
    is to be unconfigured for SSL.
  config;;
    Specifies the configuration that contains the HTTP/IIOP listener or
    iiop-service for which SSL is to be unconfigured.
  cluster;;
    Specifies the cluster in which the HTTP/IIOP listener or
    iiop-service is to be unconfigured for SSL. All the server instances
    in the cluster will get SSL unconfigured for the respective listener
    or iiop-service.
  instance;;
    Specifies the instance in which the HTTP/IIOP listener or
    iiop-service is to be unconfigured for SSL.

`--type`::
  The type of service or listener for which the SSL is deleted. The type
  must be one of the following types:

  * `http-listener`
  * `iiop-listener`
  * `iiop-service`

[[sthref978]]

=== Operands

listener_id::
  The ID of the listener from which the SSL element is to be deleted. +
  The listener_id operand is not required if the `--type` is `iiop-service`.

[[sthref979]]

=== Examples

[[GSRFM579]][[sthref980]]

==== Example 1   Deleting an SSL element from an HTTP listener

The following example shows how to delete an SSL element from an HTTP
listener named `http-listener-1`.

[source]
----
asadmin> delete-ssl
--type http-listener http-listener-1
Command delete-ssl executed successfully.
----

[[sthref981]]

=== Exit Status

0::
  command executed successfully
1::
  error in executing the command

[[sthref982]]

=== See Also

link:asadmin.html#asadmin-1m[`asadmin`(1M)]

link:create-ssl.html#create-ssl-1[`create-ssl`(1)]


