diff --git a/src/plugins/android/androidcreatekeystorecertificate.cpp b/src/plugins/android/androidcreatekeystorecertificate.cpp
index 6f006a2d816..5fc5dc02858 100644
--- a/src/plugins/android/androidcreatekeystorecertificate.cpp
+++ b/src/plugins/android/androidcreatekeystorecertificate.cpp
@@ -46,6 +46,8 @@ AndroidCreateKeystoreCertificate::AndroidCreateKeystoreCertificate(QWidget *pare
     connect(ui->keystoreRetypePassLineEdit, SIGNAL(textChanged(QString)), this, SLOT(checkKeystorePassword()));
     connect(ui->certificatePassLineEdit, SIGNAL(textChanged(QString)), this, SLOT(checkCertificatePassword()));
     connect(ui->certificateRetypePassLineEdit, SIGNAL(textChanged(QString)), this, SLOT(checkCertificatePassword()));
+    connect(ui->certificateAliasLineEdit, SIGNAL(textChanged(QString)), this, SLOT(checkCertificateAlias()));
+    connect(ui->countryLineEdit, SIGNAL(textChanged(QString)), this, SLOT(checkCountryCode()));
 }
 
 AndroidCreateKeystoreCertificate::~AndroidCreateKeystoreCertificate()
@@ -65,42 +67,71 @@ QString AndroidCreateKeystoreCertificate::keystorePassword()
 
 QString AndroidCreateKeystoreCertificate::certificateAlias()
 {
-    return ui->aliasNameLineEdit->text();
+    return ui->certificateAliasLineEdit->text();
 }
 
 QString AndroidCreateKeystoreCertificate::certificatePassword()
 {
-    return ui->certificatePassLineEdit->text();
+    return (ui->samePasswordCheckBox->checkState() == Qt::Checked)
+            ? keystorePassword()
+            : ui->certificatePassLineEdit->text();
 }
 
 AndroidCreateKeystoreCertificate::PasswordStatus AndroidCreateKeystoreCertificate::checkKeystorePassword()
 {
     if (ui->keystorePassLineEdit->text().length() < 6) {
-        ui->keystorePassInfoLabel->setText(tr("Password is too short"));
+        ui->infoLabel->setText(tr("Keystore password is too short"));
         return Invalid;
     }
     if (ui->keystorePassLineEdit->text() != ui->keystoreRetypePassLineEdit->text()) {
-            ui->keystorePassInfoLabel->setText(tr("Passwords don't match"));
+            ui->infoLabel->setText(tr("Keystore passwords do not match"));
             return NoMatch;
     }
-    ui->keystorePassInfoLabel->setText(tr("Password is ok"));
+
+    ui->infoLabel->clear();
     return Match;
 }
 
 AndroidCreateKeystoreCertificate::PasswordStatus AndroidCreateKeystoreCertificate::checkCertificatePassword()
 {
+    if (ui->samePasswordCheckBox->checkState() == Qt::Checked)
+        return Match;
+
     if (ui->certificatePassLineEdit->text().length() < 6) {
-        ui->certificatePassInfoLabel->setText(tr("Password is too short"));
+        ui->infoLabel->setText(tr("Certificate password is too short"));
         return Invalid;
     }
     if (ui->certificatePassLineEdit->text() != ui->certificateRetypePassLineEdit->text()) {
-        ui->certificatePassInfoLabel->setText(tr("Passwords don't match"));
+        ui->infoLabel->setText(tr("Certificate passwords do not match"));
         return NoMatch;
     }
-    ui->certificatePassInfoLabel->setText(tr("Password is ok"));
+
+    ui->infoLabel->clear();
     return Match;
 }
 
+bool AndroidCreateKeystoreCertificate::checkCertificateAlias()
+{
+    if (ui->certificateAliasLineEdit->text().length() == 0) {
+        ui->infoLabel->setText(tr("Certificate alias is missing"));
+        return false;
+    }
+
+    ui->infoLabel->clear();
+    return true;
+}
+
+bool AndroidCreateKeystoreCertificate::checkCountryCode()
+{
+    if (!ui->countryLineEdit->text().contains(QRegExp(QLatin1String("[A-Z]{2}")))) {
+        ui->infoLabel->setText(tr("Invalid country code"));
+        return false;
+    }
+
+    ui->infoLabel->clear();
+    return true;
+}
+
 void AndroidCreateKeystoreCertificate::on_keystoreShowPassCheckBox_stateChanged(int state)
 {
     ui->keystorePassLineEdit->setEchoMode(state == Qt::Checked ? QLineEdit::Normal : QLineEdit::Password);
@@ -115,44 +146,8 @@ void AndroidCreateKeystoreCertificate::on_certificateShowPassCheckBox_stateChang
 
 void AndroidCreateKeystoreCertificate::on_buttonBox_accepted()
 {
-    switch (checkKeystorePassword()) {
-    case Invalid:
-        ui->keystorePassLineEdit->setFocus();
+    if (!validateUserInput())
         return;
-    case NoMatch:
-        ui->keystoreRetypePassLineEdit->setFocus();
-        return;
-    default:
-        break;
-    }
-
-    switch (checkCertificatePassword()) {
-    case Invalid:
-        ui->certificatePassLineEdit->setFocus();
-        return;
-    case NoMatch:
-        ui->certificateRetypePassLineEdit->setFocus();
-        return;
-    default:
-        break;
-    }
-
-    if (!ui->aliasNameLineEdit->text().length()) {
-        ui->aliasNameLineEdit->setFocus();
-        return;
-    }
-
-    if (!ui->commonNameLineEdit->text().length())
-        ui->commonNameLineEdit->setFocus();
-
-    if (!ui->organizationNameLineEdit->text().length())
-        ui->organizationNameLineEdit->setFocus();
-
-    if (!ui->localityNameLineEdit->text().length())
-        ui->localityNameLineEdit->setFocus();
-
-    if (!ui->countryLineEdit->text().length())
-        ui->countryLineEdit->setFocus();
 
     m_keystoreFilePath = Utils::FileName::fromString(QFileDialog::getSaveFileName(this, tr("Keystore file name"),
                                                                                   QDir::homePath() + QLatin1String("/android_release.keystore"),
@@ -174,11 +169,11 @@ void AndroidCreateKeystoreCertificate::on_buttonBox_accepted()
     QStringList params;
     params << QLatin1String("-genkey") << QLatin1String("-keyalg") << QLatin1String("RSA")
            << QLatin1String("-keystore") << m_keystoreFilePath.toString()
-           << QLatin1String("-storepass") << ui->keystorePassLineEdit->text()
-           << QLatin1String("-alias") << ui->aliasNameLineEdit->text()
+           << QLatin1String("-storepass") << keystorePassword()
+           << QLatin1String("-alias") << certificateAlias()
            << QLatin1String("-keysize") << ui->keySizeSpinBox->text()
            << QLatin1String("-validity") << ui->validitySpinBox->text()
-           << QLatin1String("-keypass") << ui->certificatePassLineEdit->text()
+           << QLatin1String("-keypass") << certificatePassword()
            << QLatin1String("-dname") << distinguishedNames;
 
     QProcess genKeyCertProc;
@@ -195,3 +190,57 @@ void AndroidCreateKeystoreCertificate::on_buttonBox_accepted()
     }
     accept();
 }
+
+void AndroidCreateKeystoreCertificate::on_samePasswordCheckBox_stateChanged(int state)
+{
+    if (state == Qt::Checked) {
+        ui->certificatePassLineEdit->setDisabled(true);
+        ui->certificateRetypePassLineEdit->setDisabled(true);
+        ui->certificateShowPassCheckBox->setDisabled(true);
+    }
+
+    if (state == Qt::Unchecked) {
+        ui->certificatePassLineEdit->setEnabled(true);
+        ui->certificateRetypePassLineEdit->setEnabled(true);
+        ui->certificateShowPassCheckBox->setEnabled(true);
+    }
+
+    validateUserInput();
+}
+
+bool AndroidCreateKeystoreCertificate::validateUserInput()
+{
+    switch (checkKeystorePassword()) {
+    case Invalid:
+        ui->keystorePassLineEdit->setFocus();
+        return false;
+    case NoMatch:
+        ui->keystoreRetypePassLineEdit->setFocus();
+        return false;
+    default:
+        break;
+    }
+
+    if (!checkCertificateAlias()) {
+        ui->certificateAliasLineEdit->setFocus();
+        return false;
+    }
+
+    switch (checkCertificatePassword()) {
+    case Invalid:
+        ui->certificatePassLineEdit->setFocus();
+        return false;
+    case NoMatch:
+        ui->certificateRetypePassLineEdit->setFocus();
+        return false;
+    default:
+        break;
+    }
+
+    if (!checkCountryCode()) {
+        ui->countryLineEdit->setFocus();
+        return false;
+    }
+
+    return true;
+}
diff --git a/src/plugins/android/androidcreatekeystorecertificate.h b/src/plugins/android/androidcreatekeystorecertificate.h
index 5df88bef8b7..021a52b188f 100644
--- a/src/plugins/android/androidcreatekeystorecertificate.h
+++ b/src/plugins/android/androidcreatekeystorecertificate.h
@@ -62,11 +62,15 @@ public:
 private slots:
     PasswordStatus checkKeystorePassword();
     PasswordStatus checkCertificatePassword();
+    bool checkCertificateAlias();
+    bool checkCountryCode();
     void on_keystoreShowPassCheckBox_stateChanged(int state);
     void on_certificateShowPassCheckBox_stateChanged(int state);
     void on_buttonBox_accepted();
+    void on_samePasswordCheckBox_stateChanged(int state);
 
 private:
+    bool validateUserInput();
     Ui::AndroidCreateKeystoreCertificate *ui;
     Utils::FileName m_keystoreFilePath;
 };
diff --git a/src/plugins/android/androidcreatekeystorecertificate.ui b/src/plugins/android/androidcreatekeystorecertificate.ui
index ed0d4ecf8b7..51c66939f5d 100644
--- a/src/plugins/android/androidcreatekeystorecertificate.ui
+++ b/src/plugins/android/androidcreatekeystorecertificate.ui
@@ -7,200 +7,14 @@
     0
     0
     638
-    429
+    473
    
   
   
    Create a keystore and a certificate
   
   
-   - 
-    
-     
-      Keystore
-     
-     
-      
- 
-       
-        
-         Password:
-        
-        
-         Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
-        
-       
-      
 
-      - 
-       
-        
-         QLineEdit::Password
-        
-       
-      
 
-      - 
-       
-        
-         Retype password:
-        
-        
-         Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
-        
-       
-      
 
-      - 
-       
-        
-         QLineEdit::Password
-        
-       
-      
 
-      - 
-       
-        
-         Show password
-        
-       
-      
 
-      - 
-       
-        
-         <span style=" color:#ff0000;">Password is too short</span>
-        
-        
-         Qt::RichText
-        
-        
-         Qt::AlignCenter
-        
-       
-      
 
-     
-    
-    
-   - 
-    
-     
-      Certificate
-     
-     
-      
- 
-       
-        
-         Alias name:
-        
-        
-         Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
-        
-       
-      
 
-      - 
-       
-        
-         Aaaaaaaa; 
-        
-        
-         8
-        
-       
-      
 
-      - 
-       
-        
-         Keysize:
-        
-        
-         Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
-        
-       
-      
 
-      - 
-       
-        
-         2048
-        
-        
-         2097152
-        
-       
-      
 
-      - 
-       
-        
-         Validity (days):
-        
-        
-         Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
-        
-       
-      
 
-      - 
-       
-        
-         10000
-        
-        
-         100000
-        
-       
-      
 
-      - 
-       
-        
-         Password:
-        
-        
-         Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
-        
-       
-      
 
-      - 
-       
-        
-         QLineEdit::Password
-        
-       
-      
 
-      - 
-       
-        
-         Retype password:
-        
-        
-         Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
-        
-       
-      
 
-      - 
-       
-        
-         QLineEdit::Password
-        
-       
-      
 
-      - 
-       
-        
-         Show password
-        
-       
-      
 
-      - 
-       
-        
-         <span style=" color:#ff0000;">Password is too short</span>
-        
-        
-         Qt::RichText
-        
-        
-         Qt::AlignCenter
-        
-       
-      
 
-     
-    
-    
-   - 
+   
- 
     
      
       Certificate Distinguished Names
@@ -284,7 +98,7 @@
       
- 
        
         
-         >AA; 
+         
         
         
          2
@@ -294,7 +108,187 @@
      
   
     
    
-   - 
+   
- 
+    
+     
+      Certificate
+     
+     
+      
- 
+       
+        
+         QLineEdit::Password
+        
+       
+      
 
+      - 
+       
+        
+         Show password
+        
+       
+      
 
+      - 
+       
+        
+         10000
+        
+        
+         100000
+        
+       
+      
 
+      - 
+       
+        
+         Validity (days):
+        
+        
+         Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
+        
+       
+      
 
+      - 
+       
+        
+         Alias name:
+        
+        
+         Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
+        
+       
+      
 
+      - 
+       
+        
+         Password:
+        
+        
+         Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
+        
+       
+      
 
+      - 
+       
+        
+         
+        
+        
+         8
+        
+       
+      
 
+      - 
+       
+        
+         Keysize:
+        
+        
+         Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
+        
+       
+      
 
+      - 
+       
+        
+         QLineEdit::Password
+        
+       
+      
 
+      - 
+       
+        
+         2048
+        
+        
+         2097152
+        
+       
+      
 
+      - 
+       
+        
+         Retype password:
+        
+        
+         Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
+        
+       
+      
 
+      - 
+       
+        
+         Use Keystore password
+        
+       
+      
 
+     
+    
+    
+   - 
+    
+     
+      Keystore
+     
+     
+      
- 
+       
+        
+         QLineEdit::Password
+        
+       
+      
 
+      - 
+       
+        
+         QLineEdit::Password
+        
+       
+      
 
+      - 
+       
+        
+         Show password
+        
+       
+      
 
+      - 
+       
+        
+         Password:
+        
+        
+         Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
+        
+       
+      
 
+      - 
+       
+        
+         Retype password:
+        
+        
+         Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
+        
+       
+      
 
+      - 
+       
+        
+         Qt::Vertical
+        
+        
+         
+          20
+          40
+         
+        
+       
+      
 
+     
+    
+    
+   - 
     
      
       Qt::Horizontal
@@ -304,12 +298,22 @@
      
     
    
 
+   - 
+    
+     
+      
+     
+     
+      Qt::AlignCenter
+     
+    
+   
 
   
  
  
   keystorePassLineEdit
   keystoreRetypePassLineEdit
-  aliasNameLineEdit
+  certificateAliasLineEdit
   keySizeSpinBox
   validitySpinBox
   certificatePassLineEdit
@@ -321,7 +325,6 @@
   stateNameLineEdit
   countryLineEdit
   keystoreShowPassCheckBox
-  certificateShowPassCheckBox
   buttonBox