Вы делаете правильные вещи для подключения через SSL (я предполагаю, что вашему серверу требуются клиентские сертификаты, как правило, не требуются), но не похоже, что вы передаете какие-либо учетные данные в веб-службу.
Попробуйте добавить это:
service.Credentials = System.Net.CredentialCache.DefaultCredentials;
Это передаст учетные данные текущего пользователя, вошедшего в систему, в службу.
Пока текущий пользователь имеет разрешения на доступсервис, он должен позволить вам войти. Если пользователь с разрешениями на сервис отличается от текущего пользователя, вошедшего в систему:
credentialCache cache = new CredentialCache();
cache.Add( new Uri(service.Url), // Web service URL
"Negotiate", // Kerberos or NTLM
new NetworkCredential("username", "password", "domainname") );
service.Credentials = cache;
Все может стать немного сложнее, если вы используете прокси.
http://man.ddvip.com/web/bsaspnetapp/LiB0087.html выглядело нормально, если вам нужна дополнительная информация.