orapwd enforces password complexity rules in 12.2.0.1

Starting with Oracle Database 12.2.0.1 the orapwd utility – used to create Password Files for remote authentication – enforces complexity rules for the provided password.

Problem

When you try to create a password file with a less secure password, the orapwd terminates with an OPW-00029 error.

123$ orapwd file=$ORACLE_HOME/dbs/orapwDB01 password=oracle force=y OPW-00029: Password complexity failed for SYS user : Password must contain at least 8 characters.

The provided password must succeed the validation of the following password characteristics (extracted from the orapwd utility code).

  • Password must contain at least 8 characters
  • Password must not contain double quotes
  • Password must contain at least 1 letter
  • Password must contain at least 1 digit
  • Password must contain at least 1 special character
  • Password must not contain the username
  • Password must not contain username reversed

Solution

Use strong password

To get rid of the above error, provide a password which fulfills all complexity requirements.

1$ orapwd file=$ORACLE_HOME/dbs/orapwDB01 password=welcome1! force=y

Create Password File in 12c format

If you cannot set a strong password, you can use the old 12c Release 1 format using the format parameter – the default for this parameter is 12.2.

1$ orapwd file=$ORACLE_HOME/dbs/orapwDB01 password=oracle format=12 force=y

Using the older 12c format has the disadvantage, that the following features are not supported.

  • Granting administrative privileges to external users
  • Enable SSL and Kerberos authentication for administrative users

But you have the possibilty to migrate a Password File to a newer format. During this migration the password complexity rules are ignored. You have to use different names for the involved Password Files.

123456# Create dummy Password File with old format$ orapwd file=$ORACLE_HOME/dbs/orapwDB01.tmp password=oracle format=12# Migrate (copy) Password File to 12.2 format$ orapwd file=$ORACLE_HOME/dbs/orapwDB01 input_file=$ORACLE_HOME/dbs/orapwDB01.tmp# Remove dummy Password File$ rm $ORACLE_HOME/dbs/orapwDB01.tmp

Conclusion

A strong password for remote authentication using SYSDBA, SYSBACKUP etc. privilege is a good starting point to archieve a higher level of security accessing the database from the outside. The decision of Oracle to enforce a strong(er) password during creation time of the Password File is a little but good enhancement of the orapwd utility.

To verify the format of your Password File, just use the describe command of the orapwd utility.

12$ orapwd describe file=$ORACLE_HOME/dbs/orapwDB01Password file Description : format=12.2

References

credit: https://christian-gohmann.de/2017/05/08/orapwd-enforces-password-complexity-rules-in-12-2-0-1/