How to fix "remote: ssl required" when pushing to Bitbucket?

nullDev picture nullDev · Aug 23, 2012 · Viewed 11.8k times · Source

I am getting the above error whenever I try to push my changes. I am using TortoiseHg as client.

Here is the debug output for hg push:

pushing to https://[email protected]/nulldev/windows-phone    
using https://bitbucket.org/nulldev/windows-phone    
proxying through http://[proxy - omitted]
http auth: user nulldev, password not set    
sending capabilities command    
bitbucket.org certificate successfully verified    
[HgKeyring] Keyring URL: https://bitbucket.org/nulldev/windows-phone    
[HgKeyring] Looking for password for user nulldev and url https://bitbucket.org/nulldev/windows-phone    
[HgKeyring] Keyring password found. Url: https://bitbucket.org/nulldev/windows-phone, user: nulldev, passwd: ********    
bitbucket.org certificate successfully verified    
query 1; heads    
sending batch command    
bitbucket.org certificate successfully verified    
[HgKeyring] Keyring URL: https://bitbucket.org/nulldev/windows-phone    
[HgKeyring] Cached auth data found. Url: https://bitbucket.org/nulldev/windows-phone, user: nulldev, passwd: ********    
bitbucket.org certificate successfully verified    
searching for changes    
all remote heads known locally    
sending branchmap command    
bitbucket.org certificate successfully verified    
[HgKeyring] Keyring URL: https://bitbucket.org/nulldev/windows-phone    
[HgKeyring] Cached auth data found. Url: https://bitbucket.org/nulldev/windows-phone, user: nulldev, passwd: ********    
bitbucket.org certificate successfully verified    
sending branchmap command    
bitbucket.org certificate successfully verified    
[HgKeyring] Keyring URL: https://bitbucket.org/nulldev/windows-phone    
[HgKeyring] Cached auth data found. Url: https://bitbucket.org/nulldev/windows-phone, user: nulldev, passwd: ********    
bitbucket.org certificate successfully verified    
preparing listkeys for "bookmarks"    
sending listkeys command    
bitbucket.org certificate successfully verified    
[HgKeyring] Keyring URL: https://bitbucket.org/nulldev/windows-phone    
[HgKeyring] Cached auth data found. Url: https://bitbucket.org/nulldev/windows-phone, user: nulldev, passwd: ********    
bitbucket.org certificate successfully verified    
1 changesets found    
list of changesets:
35b9240f7e7a5eee7936d8559962971e94fab1fc    
bundling: 1/1 changesets (100.00%)    
bundling: 1/1 manifests (100.00%)    
bundling: Key Ring/Controls/BindableApplicationBarIconButton.xaml.cs 1/1 files (100.00%)    
sending unbundle command    
sending 431 bytes    
bitbucket.org certificate successfully verified    
sending: 0 kb    
sending: 0 kb    
[HgKeyring] Keyring URL: https://bitbucket.org/nulldev/windows-phone    
[HgKeyring] Cached auth data found. Url: https://bitbucket.org/nulldev/windows-phone, user: nulldev, passwd: ********    
bitbucket.org certificate successfully verified    
sending: 0 kb    
sending: 0 kb    
remote: ssl required    
preparing listkeys for "phases"    
sending listkeys command    
bitbucket.org certificate successfully verified    
[HgKeyring] Keyring URL: https://bitbucket.org/nulldev/windows-phone    
[HgKeyring] Cached auth data found. Url: https://bitbucket.org/nulldev/windows-phone, user: nulldev, passwd: ********    
bitbucket.org certificate successfully verified    
try to push obsolete markers to remote    
checking for updated bookmarks    
preparing listkeys for "bookmarks"
sending listkeys command    
bitbucket.org certificate successfully verified    
[HgKeyring] Keyring URL: https://bitbucket.org/nulldev/windows-phone    
[HgKeyring] Cached auth data found. Url: https://bitbucket.org/nulldev/windows-phone, user: nulldev, passwd: ********    
bitbucket.org certificate successfully verified

Answer

VonC picture VonC · Aug 23, 2012

This is usually due to a config issue on the server side (ie on BitBucket's side), as illustrated by this old ticket (which suddenly got a few new entries, all mentioning your error).

pushing to https://[email protected]/nulldev/windows-phone
http authorization required
realm: Bitbucket.org HTTP
user: nulldev
password: 
searching for changes
remote: ssl required

As explained in "Remote repos":

What happens is that Mercurial’s webserver won’t let you push over plain HTTP by default, it requires you to use a HTTPS URL.
Alice can disable this requirement by using --config web.push_ssl=No on the command line when she serves the repository

So I suppose that on BitBucket side, they need to make sure the repo are served with:

hg serve --config web.push_ssl=No --config "web.allow_push=*"